我目前正在用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)
如果要使用固定函数属性,则必须通过^{} 启用客户端功能。
在循环中通过} 的最后一个参数是顶点坐标数:
glVertex3fv
指定顶点是多余的。在glBegin
/glEnd
序列之外指定顶点会导致未定义的行为。^{
相关问题 更多 >
编程相关推荐