我是pyglet的新手,B4,我试图将PyOpenGL与Pygame一起使用,但是PyOpenGL创建了奇怪的NuffFunctionErrors,所以我已经转移到Pyglet。
我已经尝试过这段代码,它运行得很完美:
from pyglet.gl import *
window = pyglet.window.Window()
vertices = [
0, 0,
window.width, 0,
window.width, window.height]
vertices_gl = (GLfloat * len(vertices))(*vertices)
glEnableClientState(GL_VERTEX_ARRAY)
glVertexPointer(2, GL_FLOAT, 0, vertices_gl)
@window.event
def on_draw():
glClear(GL_COLOR_BUFFER_BIT)
glLoadIdentity()
glDrawArrays(GL_TRIANGLES, 0, len(vertices) // 2)
pyglet.app.run()
我试图重写这个以使用VBO,但我有一个黑色的窗口。 我的代码出了什么问题?
from pyglet.gl import *
window = pyglet.window.Window()
vertices = [
0, 0,
window.width, 0,
window.width, window.height]
vertices_gl = (GLfloat * len(vertices))(*vertices)
glEnableClientState(GL_VERTEX_ARRAY)
buffer=(GLuint)(0)
glGenBuffers(1,buffer)
glBindBuffer(GL_ARRAY_BUFFER_ARB, buffer)
glBufferData(GL_ARRAY_BUFFER_ARB, 4*3,
vertices_gl, GL_STATIC_DRAW)
glVertexPointer(2, GL_FLOAT, 0, 0)
@window.event
def on_draw():
glClear(GL_COLOR_BUFFER_BIT)
glLoadIdentity()
glDrawArrays(GL_TRIANGLES, 0, len(vertices) // 2)
@window.event
def on_resize(width, height):
glViewport(0, 0, width, height)
glMatrixMode(gl.GL_PROJECTION)
glLoadIdentity()
glOrtho(0, width, 0, height, -1, 1)
glMatrixMode(gl.GL_MODELVIEW)
pyglet.app.run()
答案 0 :(得分:0)
好的,我在评论中收到了答案,但问题是12个字节不够4个6个浮点数。
每个浮点数使用4个字节。