1
私は運がないpyOpenGLで単純な即時モードのテクスチャ付きポリゴンのセットを表示しようとしています。私はいくつかのジオメトリデータをロードするいくつかのコードをまとめました。すべてがうまく動作し、テクスチャを追加するコードがすべてありますが、白いポリゴンを取得するだけです。uvマッピングpython OpenGL三角形
は、ここでは、コードの重要なビットです:また、あなたはあなたがすべき、各ペイントコールにテクスチャを作成しないでください
glEnable(GL_TEXTURE_2D)
を:
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を呼び出すたびにまだメモリがリークしている –
メモリリークはpyOpenGLの最新ビルドのバグでした... –