我正在尝试在 C 中使用 OpenGL 绘制一个 L 形多边形。根据我的说法,这段代码应该可以做到,但它并没有给我预期的结果。我要绘制的形状类似于下面的形状。发生错误的点是函数polygon1中的点2。
我似乎在这里犯了什么错误,或者它是 OpenGL 中的错误。下面显示的图片是错误的红色输出,下面绘制的图表是代码的预期输出。
----
| |
| |
--- |
| |
------
void polygon1(float x,float y)
{
glColor3f(0,1,0);
glBegin(GL_POLYGON);
glVertex2f(x,y);
glVertex2f(x,y+25);
glVertex2f(x+25,y+25);
glVertex2f(x+25,y+75);
glVertex2f(x+50,y+75);
glVertex2f(x+50,y);
glEnd();
glFlush();
}
void mydisplay()
{
polygon1(200.0,25.0);
}
void main(int argc,char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glutInitWindowSize(400,400);
glutInitWindowPosition(540,320);
glutCreateWindow("my first attempt");
glClearColor(0.0f,0.0f,0.0,0.0f);
glClear(GL_COLOR_BUFFER_BIT);
glutDisplayFunc(mydisplay);
gluOrtho2D(0.0,400.0,0.0,400.0);
glutMainLoop();
}
最佳答案
OpenGL 只能正确渲染凸多边形。你的“L”需要被分成一个三角形条。您可以手动或通过 GLU 曲面 segmentation 器执行此操作(我假设 GLU 是您的一个选项,因为您无论如何都在立即模式下渲染)。
关于c - OpenGL绘制凹多边形(错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23485519/