0
我使用交织的VBO
来使用Python和PyOpenGL显示几何图形。该VBO由顶点,法线和颜色:glVertexPointer(),glNormalPointer - PyOpenGL中的步幅和指针参数
[vx1, vy1, vz1, nx1, ny1, nz1, R1, G1, B1, vx2...]
图是具有代码所做的:
glEnableClientState(GL_VERTEX_ARRAY)
glEnableClientState(GL_NORMAL_ARRAY)
glEnableClientState(GL_COLOR_ARRAY)
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, self.vbo_id)
v_pointer = None
n_pointer = ctypes.c_void_p(12)
c_pointer = ctypes.c_void_p(24)
v_stride = 24
n_stride = 24
c_stride = 24
glVertexPointer(3,
GL_FLOAT,
v_stride,
v_pointer)
glNormalPointer(GL_FLOAT,
n_stride,
n_pointer)
glColorPointer(3,
GL_FLOAT,
c_stride,
c_pointer)
glDrawArrays(GL_TRIANGLES, #POINTS
0,
self.len_)
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0) # reset
glDisableClientState(GL_COLOR_ARRAY)
glDisableClientState(GL_NORMAL_ARRAY)
glDisableClientState(GL_VERTEX_ARRAY)
显示的几何形状应该是一个简单的立方体,但我得到的是随机取向的三角形(见图)。我正在阅读关于PyOpenGL here中的glVertexPointer()
问题,并发现solution与ctypes.c_void_p()
,但我不确定如何实现它。有人能指出我在做什么错或在这里失踪?或者我该如何解决这个问题?
基于该documentation的stride
参数在VBO
阵列相同类型(顶点,法线,色彩...)(以字节为单位)的连续2个阵列之间的偏移量。或不?