이 간단한 프로그램은 미국 국기에서와 같이 번갈아 배치 된 13 개의 짝수 인 빨간색과 흰색 줄무늬를 그리도록 설계되었습니다.드로잉 2D 줄무늬
// A Simple OpenGL Project
// Author: Michael Hall
//
// This C++ code and project are provided "as is" without warranty of any kind.
//
// Copyright 2010 XoaX - For personal use only, not for distribution
//
// Elaborated by me :)
#include <glut.h>
void DrawStripes(const int quantity)
{
glBegin(GL_QUADS);
for(int i=1; i <= quantity ; i++)
{
if(i%2)
glColor3f(1.0,0.0,0.0);
else
glColor3f(1.0,1.0,1.0);
glVertex2f(0,static_cast<float>(i-1)/static_cast<float>(quantity));
glVertex2f(1.0,static_cast<float>(i-1)/static_cast<float>(quantity));
glVertex2f(0,static_cast<float>(i)/static_cast<float>(quantity));
glVertex2f(1.0,2*static_cast<float>(i)/static_cast<float>(quantity));
}
}
void Draw()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0, 0.0, 1.0);
DrawStripes(13);
glEnd();
glFlush();
}
void Initialize()
{
glClearColor(0.0, 0.0, 102.0/255.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}
int main(int iArgc, char** cppArgv)
{
glutInit(&iArgc, cppArgv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(950,500);
glutInitWindowPosition(200, 200);
glutCreateWindow("Rough draft");
Initialize();
glutDisplayFunc(Draw);
glutMainLoop();
return 0;
}
이 실제로 어떻게 보이는지 이것은 : 이유가있는 파란색 삼각형을 전경에? Draw/DrawStripes 함수 내에 "QUADS"만 지정했습니다.
나를 위해 비논리적 인 것처럼 보이지만 올바른 출력을 얻으려면 3 번째 및 4 번째 버텍스를 바꿔 쓰면 충분합니다. 나는 2로 곱하는 것과 아무런 차이가 없다는 것을 의미합니다. – 0x6B6F77616C74
단지 차이가 없다고해서 차이가 없다는 것을 의미하지는 않습니다. 비뚤어진 쿼드는 다음에 그릴 쿼드 뒤에 멋지게 숨길 것이므로 볼 수 없지만 쿼드 하나만 그리면 볼 수 있습니다. 당신은 내가 단지 보행자라고 말할 수 있습니다 : p –