Qt 在QGraphicsView中绘制OpenGL时的失真
通过QGraphicscene的trackground(),我向QGraphicscene添加了一个QGraphicsRectItem 所有的opengl代码都写在QGraphicscene的trackground()中 守则:Qt 在QGraphicsView中绘制OpenGL时的失真,qt,opengl,Qt,Opengl,通过QGraphicscene的trackground(),我向QGraphicscene添加了一个QGraphicsRectItem 所有的opengl代码都写在QGraphicscene的trackground()中 守则: MTList=glGenLists(1); glEnableClientState(GL_VERTEX_ARRAY); Vertex_iterator vi = model.vertices_begin(); glVertexPointer(3, GL_DOUBLE
MTList=glGenLists(1);
glEnableClientState(GL_VERTEX_ARRAY);
Vertex_iterator vi = model.vertices_begin();
glVertexPointer(3, GL_DOUBLE, sizeof(Vertex), &(vi->point()[0]));
glDisable(GL_LIGHTING);
glNewList(MTList, GL_COMPILE);
glColor3f(1.0,0.0,1.0);
//glLineWidth(10.0);
//glDisable(GL_CULL_FACE);
//glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glDrawElements(GL_POINTS, 3*model.size_of_facets(), GL_UNSIGNED_INT, &modelfaces[0]); glEndList();
glDisableClientState(GL_VERTEX_ARRAY);
项目显示正常。但是,在我启用这一行之后:glPolygonMode(GL\u FRONT\u和GL\u BACK,GL\u行)
这个项目被歪曲了
而如果我更改代码:
glPolygonMode(GL_前端,GL_线);解决了问题,项目结果与预期一致
为什么会发生这种情况?根据-您正在决定如何使用此调用对多边形进行着色/照明。GL_FRONT_和_BACK将使所有面都着色/发光,而不仅仅是前向面(由法线/顶点顺序定义)。哦,我明白了!。谢谢你的帮助!