2012-06-21 22 views
4

抵消什麼PyOpenGL相當於如何指定緩衝區PyOpenGL

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

glDrawElements(GL_TRIANGLE_STRIP, count, GL_UNSIGNED_SHORT, BUFFER_OFFSET(offset)) 

如果偏移量爲0,則

glDrawElements(GL_TRIANGLE_STRIP, count, GL_UNSIGNED_SHORT, None) 

的作品,但我無法弄清楚如何指定一個非-zero偏移到緩衝區對象中。

回答

6

你應該傳遞一個​​空指針,這可以通過構造:

ctypes.c_void_p(offset) 

似乎有一個更具體的PyOpenGL選項使用VBO類,並且根據this使用某些版本的PyOpenGL。

+0

這與glVertexAttribPointer相同 - 對於任何試圖獲得此效果的人。 –

6

可以使用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)