Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在OpenGL中渲染同一z位置的两个对象?_Python_Opengl - Fatal编程技术网

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。