我得到一个奇怪的效果渲染我自己编码的这些球体/圆柱体。
顶点和索引是正确的,因为当我在glDrawElements而不是GL_TRIANGLES中使用GL_LINE_STRIP时,我的对象按预期呈现,因此没有重复的顶点,但是当我反转索引顺序时,我得到相同的效果。
以下是使用GL_TRIANGLES渲染的对象,您可以看到这些内圈在其中呈现:
以下是GL_LINE_STRIP的对象,几何对我来说很好看:
我的顶点着色器代码是一个标准的MVP *顶点位置变换,而像素着色器代码只是输出一个没有其他功能的颜色。
而且要清楚,即使我反转了索引,我仍然可以使用GL_TRIANGLES获得完全相同的图像,我仍然可以看到对象,网格内部具有相同的圆圈。
答案 0 :(得分:2)
如果glCullFace ( GL_FRONT);
解决了您的问题并且您打算使用光照渲染几何体,那么您应该执行以下操作之一:
您的三角形以CW(顺时针)方式绘制,因此OpenGL计算出靠近您的三角形面向后方并剔除它们,因为默认值为glCullFace ( GL_BACK);
您只需使用GL_FRONT
调用它并修复问题。但是,当您要计算三角形的法线时,法线将处于相反方向。您可以反转法线或使用CCW中的绘图三角形进行修正。