如何使用PyOpenGL指定缓冲区偏移量

Joh*_*åde 5 python opengl pyopengl vertex-buffer

什么是PyOpenGL等价物

#define BUFFER_OFFSET(i) (reinterpret_cast<void*>(i))

glDrawElements(GL_TRIANGLE_STRIP, count, GL_UNSIGNED_SHORT, BUFFER_OFFSET(offset))
Run Code Online (Sandbox Code Playgroud)

如果偏移量为0,那么

glDrawElements(GL_TRIANGLE_STRIP, count, GL_UNSIGNED_SHORT, None)
Run Code Online (Sandbox Code Playgroud)

工作,但我无法弄清楚如何指定缓冲对象的非零偏移.

Mār*_*iko 7

您可以使用OpenGL.arrays.vbo.VBO类:

from OpenGL.arrays import vbo

# data for your buffer
buf = vbo.VBO( [ 1,2,3,4,5,...], target = GL_ELEMENT_ARRAY_BUFFER ) 

# calls glBindBuffer
buf.bind() 

# starts reading at 14-th byte
glDrawElements(GL_TRIANGLE_STRIP, count, GL_UNSIGNED_SHORT, buf + 14)
Run Code Online (Sandbox Code Playgroud)


rot*_*lup 7

你应该传递一个ctypesvoid指针,它可以由以下构造:

ctypes.c_void_p(offset)
Run Code Online (Sandbox Code Playgroud)

似乎有更多PyOpenGL特定选项使用VBO类,并根据与一些版本的PyOpenGL相关.