我在尝试绘制一个多边形并填充特定颜色时遇到了奇怪的问题:
如果我将多边形模式设置为:
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
多边形渲染得很好:
但是,一旦我用以下代码替换该行:
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
多边形填充不正确,但似乎大多数线条都被投影到其第一个顶点或类似位置:
我显然做错了什么。我想做的是让颜色保持在多边形内,但它似乎忽略了几个顶点。可能出了什么问题?
这里是我的代码的一些选定部分,这可能非常相关。我跳过了一些数据结构加载和其他可能不太相关的内容:
如果我将多边形模式设置为:
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
多边形渲染得很好:
但是,一旦我用以下代码替换该行:
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
多边形填充不正确,但似乎大多数线条都被投影到其第一个顶点或类似位置:
我显然做错了什么。我想做的是让颜色保持在多边形内,但它似乎忽略了几个顶点。可能出了什么问题?
这里是我的代码的一些选定部分,这可能非常相关。我跳过了一些数据结构加载和其他可能不太相关的内容:
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
glutInitWindowSize(640, 480);
glutInitWindowPosition(150, 100);
glutCreateWindow("CR-View GL");
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
void display(void) {
glClearColor(0, 0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT);
/* Set drawing color */
glColor3f(1, 0, 1);
drawPolys(currentDrawingMode);
/* Clear screen and draw */
glutSwapBuffers();
}
// Draws the polygons
void drawPolys (int id) {
int poly, vertex;
// set wireframe mode (if an empty polygon is required)
if (id == 0) {
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
}
//Sets color fill mode
if (id == 1) {
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
}
// Draw each polygon...
for (poly = 0; poly < polyCount; poly++) {
glBegin(GL_POLYGON);
// Draw each vertex...
for (vertex = 0; vertex < Polygons[poly].vertexCount; vertex++) {
glVertex2f((float)Polygons[poly].vertices[vertex].x, (float)Polygons[poly].vertices[vertex].y);
}
glEnd();
}
}