【发布时间】:2020-05-05 00:02:51
【问题描述】:
我目前正在使用 PyGame 和 PyOpenGL 编写游戏,当使用顶点缓冲区时,会出现图形故障。故障包括在每个模型之间绘制不应该绘制的线。我发现在 Ground() 和 GroundVBO() 之间交替在大多数情况下不会导致任何图形故障。我有什么遗漏的吗?
global vbo
vbo = 0
def Ground():
glBegin(GL_LINES)
for edge in ground_edges:
for vertex in edge:
glVertex3fv(ground_verticies[vertex])
glEnd()
def GroundVBO():
for edge in ground_edges:
for vertex in edge:
ground_noot = glVertex3fv(ground_verticies[vertex])
vbo = glGenBuffers(1)
glBindBuffer (GL_ARRAY_BUFFER, vbo)
glBufferData (GL_ARRAY_BUFFER, len(ground_verticies)*4, ground_noot, GL_STATIC_DRAW)
glVertexPointer (3, GL_FLOAT, 0, None)
glDrawArrays(GL_LINES, 0, 300)
【问题讨论】:
-
我相信导致问题的原因是在 glBegin/glEnd 之外指定了顶点。我现在要做的就是重写一些代码,它应该可以工作了!
-
我现在已经开始工作了,我被困在顶点指针的数字数组上,因为我正在附加整个带有括号的顶点。我必须做的是单独附加每个点,所以有括号。
标签: python opengl pygame pyopengl