1
我试图用pyOpenGL显示一个简单的立即模式纹理多边形集合,没有运气。我已经将一些加载一些几何数据的代码捆绑在一起,并且所有工作都很好,并且据我所知,我有所有代码都可以为其添加纹理,但只是获得了白色多边形。uv mapping python OpenGL三角形
下面的代码的重要位:
self.img = PIL.Image.open('/projects/openGL_robot_face/facemap.png')
self.image_data = numpy.array(list(self.img.getdata()), numpy.uint8)
def paintGL(self):
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
texture = glGenTextures(1)
glPixelStorei(GL_UNPACK_ALIGNMENT,1)
glBindTexture(GL_TEXTURE_2D, texture)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, self.img.size[0], self.img.size[1], 0, GL_RGB, GL_UNSIGNED_BYTE, self.image_data)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
glTranslate(0.0, 0.0, -50.0)
glScale(20.0, 20.0, 20.0)
glRotate(self.yRotDeg, 0.2, 1.0, 0.3)
glTranslate(-0.5, -0.5, -0.5)
glBegin(GL_TRIANGLES)
for vert in self.poly_verts:
glTexCoord2f(vert[6], vert[7])
glVertex3f(vert[0], vert[1], vert[2])
glEnd()
是的,你说得对,glEnable(GL_TEXTURE_2D)固定它,我感动的纹理加载圈外的,因为我意识到这是一个严重的内存泄露!问题是,即时我仍然在内存泄漏每次我在调用glTexCoord2f内循环 – 2012-02-02 12:51:33
内存泄漏是pyOpenGL的最新版本中的一个错误...花了一段时间,以找出一个 – 2012-02-03 10:23:53