Python OpenGL中的图形始终为白色

Python OpenGL中的图形始终为白色,python,opengl,Python,Opengl,我试图在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

我试图在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)

有什么想法吗?

在计算中不再考虑启用照明的顶点颜色。相反,您必须设置材质属性。但是,顶点颜色非常方便,因此有一种方法可以使用顶点颜色来设置材质属性

glEnable(GL_COLOR_MATERIAL);
glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
但是请注意,要使照明正常工作,必须提供顶点法线,否则事情看起来会很奇怪。最好暂时禁用照明


另一个注意事项:请停止使用旧的即时模式、固定功能管道OpenGL。而是学习现代OpenGL。我建议您开始。

我解决了删除的问题: glEnable(GL_深度_测试) glEnable(德国劳埃德大学照明) glEnable(Glu LIGHT0)


有人能解释一下为什么现在能用吗?

Thanx datenwold。非常好的链接!