자동으로 첫 번째로 마지막 정점을 연결합니다 사용 GL_LINE_LOOP
: 당신이 GL_LINES
에 죽은-설정하는 경우
#include <GL/glut.h>
#include <cmath>
void glPolygon(unsigned int sides)
{
if(sides < 3) return;
const float PI = 3.14159;
const float step = (2 * PI)/static_cast<float>(sides);
glBegin(GL_LINE_LOOP);
for(unsigned int i = 0; i < sides; ++i)
{
glVertex2f(cos(i * step), sin(i * step));
}
glEnd();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
double ar = glutGet(GLUT_WINDOW_WIDTH)/(double)glutGet(GLUT_WINDOW_HEIGHT);
glOrtho(-2 * ar, 2 * ar, -2, 2, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor3ub(255, 0, 0);
glPolygon(8);
glutSwapBuffers();
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
glutInitWindowSize(640, 480);
glutCreateWindow("Polygons");
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
이 작품 :
void glPolygonLines(unsigned int sides)
{
if(sides < 3) return;
const float PI = 3.14159f;
const float step = (2 * PI)/static_cast<float>(sides);
glBegin(GL_LINES);
for(unsigned int i = 0; i < sides; ++i)
{
unsigned int cur = (i + 0) % sides;
unsigned int nxt = (i + 1) % sides;
glVertex2f(cos(cur * step), sin(cur * step));
glVertex2f(cos(nxt * step), sin(nxt * step));
}
glEnd();
}
"나는 접근 방식을 가지고 있지만, 제대로 작동하지 않습니다. "... 가지고있는 것을 게시하십시오. – genpfault