我试图在OpenGL中绘制一些简单的三角形。 问题是我的三角形总是白色的,我用glColor3f函数添加了一些颜色:
def OnDraw(self):
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glClearColor(.1, 0.1, 0.1, 1.0)
glBegin (GL_TRIANGLES)
glColor3f (1.0, 0.0, 0.0)
glVertex2f (0.25, 0.25)
glColor3f (0.0, 1.0, 0.0)
glVertex2f (0.12, 0.25)
glColor3f (0.0, 0.0, 1.0)
glVertex2f (0.25, 0.4)
glEnd()
这是我的初始化:
def InitGL(self):
# set viewing projection
glMatrixMode(GL_PROJECTION)
glFrustum(-0.5, 0.5, -0.5, 0.5, 1.0, 3.0)
# position viewer
glMatrixMode(GL_MODELVIEW)
glTranslatef(0.0, 0.0, -2.0)
glEnable(GL_DEPTH_TEST)
glEnable(GL_LIGHTING)
glEnable(GL_LIGHT0)
有什么想法吗?
答案 0 :(得分:2)
启用照明后,不再考虑使用顶点颜色进行计算。相反,您必须设置材料属性。然而,顶点颜色非常方便,因此有一种方法可以使用顶点颜色来设置材质属性。
glEnable(GL_COLOR_MATERIAL);
glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
但请注意,要使照明工作,您必须提供顶点法线,否则事情看起来很奇怪。暂时禁用照明可能是最好的。
另外注意:请停止使用老旧的立即模式,固定功能管道OpenGL。而是学习现代OpenGL。我建议http://arcsynthesis.org/gltut开始。
答案 1 :(得分:0)
我解决了我的删除问题: glEnable(GL_DEPTH_TEST) glEnable(GL_LIGHTING) glEnable(GL_LIGHT0)
有人能解释我为什么现在有效吗?