【发布时间】:2018-04-10 20:46:32
【问题描述】:
我使用 Python 3.6。最初我使用这样的代码:
array_to_texture(self.board)
glColor3fv((1.0, 1.0, 1.0))
glBegin(GL_QUADS)
for vertex, tex in zip(self.POINTS, self.TEX):
glTexCoord2f(*tex)
glVertex3fv(vertex)
glEnd()
它有效。它在 3D 空间中绘制带有纹理的正方形。
现在我想使用 VBO 来解决问题。绘制墙壁(固定颜色)可以使用以下代码:
vbo = glGenBuffers(1)
glBindBuffer(GL_ARRAY_BUFFER, vbo)
glBufferData(GL_ARRAY_BUFFER, len(vertices) * 4, (c_float * len(vertices))(*vertices), GL_STATIC_DRAW)
glVertexPointer(3, GL_FLOAT, 0, None)
glDrawArrays(GL_QUADS, 0, 4)
效果很好。 主要问题,如何使用这种方法附加和绘制纹理? 如何为纹理坐标创建某种缓冲区并使用它?我真的很难找到一些最小的工作示例。
小问题是,即使文档中不允许使用 GL_QUADS,glDrawArrays(GL_QUADS, 0, 4) 行怎么可能工作:http://pyopengl.sourceforge.net/documentation/manual-3.0/glDrawArrays.html
【问题讨论】: