Python 如何在OpenGL中渲染同一z位置的两个对象?
我加载了一个Python 如何在OpenGL中渲染同一z位置的两个对象?,python,opengl,Python,Opengl,我加载了一个Candide3D模型self.drawFace(顶点)并加载了一个帽子三维模型glCallList(obj.gl_list),但当我更改帽子的z位置时,它永远不会停留在candiedie3模型上。 我还更改了透视图(50,self.w/float(self.h),1250.0)相机矩阵,但几乎所有情况下,帽子都在Candide3模型前面渲染 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glLo
Candide3D
模型self.drawFace(顶点)并加载了一个帽子三维模型glCallList(obj.gl_list),但当我更改帽子的z位置时,它永远不会停留在candiedie3
模型上。
我还更改了透视图(50,self.w/float(self.h),1250.0)相机矩阵,但几乎所有情况下,帽子都在Candide3
模型前面渲染
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glLoadIdentity()
setOrtho(self.w, self.h)
glEnable(GL_DEPTH_TEST)
glEnable(GL_TEXTURE_2D)
glDepthMask(GL_FALSE)
self.drawFace(vertices)
glDepthMask( GL_TRUE )
######## render next model ##########
glLightfv(GL_LIGHT0, GL_POSITION, (-40, 50, 100, 0.0))
glLightfv(GL_LIGHT0, GL_AMBIENT, (0.2, 0.2, 0.2, 1.0))
glLightfv(GL_LIGHT0, GL_DIFFUSE, (0.5, 0.5, 0.5, 1.0))
glEnable(GL_LIGHT0)
glEnable(GL_LIGHTING)
glEnable(GL_COLOR_MATERIAL)
glEnable(GL_DEPTH_TEST)
glShadeModel(GL_SMOOTH)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(50,self.w/float(self.h), 1 , 250.0)
glEnable(GL_DEPTH_TEST)
glMatrixMode(GL_MODELVIEW)
glBindTexture(GL_TEXTURE_2D, self.texture_image2)
glTranslate(self.tx,self.ty,-40)
self.tx,self.ty=self.track(shape2D)
glRotate(ry, 1, 0, 0)
glPushMatrix()
glCallList(obj.gl_list)
glPopMatrix()
glEnable(GL_TEXTURE_2D)
def setOrtho(w,h):glMatrixMode(GL_投影)glLoadIdentity()glOrtho(0,w,h,0,-200,200)glMatrixMode(GL_MODELVIEW),这是setOrtho(w,h):函数如果您指的是glMatrix模式(GL_MODELVIEW),我在setOrtho(w,h)函数中设置了它??对不起,我完成了您的任务,但没有做任何更改,我想把我的帽子戴在脸上。就像手里拿着枪,脸上戴着眼镜,但我画不出来!为什么在第一次渲染期间禁用深度缓冲区写入?如果启用深度缓冲区,则在candide3模型的背景中启用我的帽子模型apear。