簡體   English   中英

Pyglet Opengl VBO

[英]Pyglet Opengl VBOs

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

好的,我收到了注釋中的答案,但問題是12個字節不足以容納4個6個浮點數。

每個浮點數使用4個字節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM