gpt4 book ai didi

python - uv 映射 python OpenGL 三角形

转载 作者:行者123 更新时间:2023-12-01 06:03:41 29 4
gpt4 key购买 nike

我试图用 pyOpenGL 显示一组简单的即时模式纹理多边形,但没有成功。我已经将一些加载一些几何数据的代码捆绑在一起,并且一切正常,据我所知,我拥有向其添加纹理的所有代码,但只是获得白色多边形。

以下是代码的重要部分:

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()

最佳答案

您是否在 OpenGL 中启用了纹理,使用:

glEnable(GL_TEXTURE_2D)

此外,您不应该在每次 Paint 调用时创建纹理,您应该一劳永逸地创建它(使用 glGenTextures 和 glTex*),然后存储纹理 ID,并在 Paint 期间执行严格的最小值,这是绑定(bind)与纹理。

def paintGL(self):
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

glEnable(GL_TEXTURE_2D)
glBindTexture(GL_TEXTURE_2D, texture)

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()
glDisable(GL_TEXTURE_2D)

不幸的是,我现在无法尝试答案,所以这纯粹是我的想法。您可能会从上一篇文章中受益: Render a textured rectangle with PyOpenGL

关于python - uv 映射 python OpenGL 三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9110497/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com