问题描述
我用中心的.obj文件中的对象实现了arcball 当我尝试实现照明时,对象显示出奇怪的行为
当我稍微转动物体时,物体解构并突然露出背面
在我实施照明之前不会出现这种现象 基于此How to correctly add a light to make object get a better view with pygame and pyopengl
这是我针对照明障碍所做的
if __name__ == "__main__":
pygame.init()
display = (SCREEN_WIDTH,SCREEN_HEIGHT)
screen = pygame.display.set_mode(display,DOUBLEBUF|OPENGL)
glMatrixMode( GL_PROJECTION );
gluPerspective(45,(display[0]/display[1]),0.1,30000.0)
glTranslatef(0.0,0.0,-250)
glLight(GL_LIGHT0,GL_POSITION,(1,1,0))
glLightfv(GL_LIGHT0,GL_AMBIENT,(0,1))
glLightfv(GL_LIGHT0,GL_DIFFUSE,(2,2,1))
while True:
mouse_pos = pygame.mouse.get_pos()
glMatrixMode( GL_MODELVIEW )
glLoadIdentity()
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
glEnable(GL_LIGHTING)
glEnable(GL_LIGHT0)
glEnable(GL_COLOR_MATERIAL)
glColorMaterial(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE )
object1.draw()
gldisable(GL_LIGHT0)
gldisable(GL_LIGHTING)
gldisable(GL_COLOR_MATERIAL)
pygame.display.flip()
pygame.time.wait(10)
解决方法
您必须启用Depth Test。在应用程序循环之前启用深度测试:
glEnable(GL_DEPTH_TEST)