有没有办法为glDrawElements使用不同大小的缓冲区?我想以某种方式将顶点映射到纹理坐标,这样纹理坐标缓冲区实际上可以小于顶点缓冲区。
示例:顶点缓冲区有16个顶点,纹理坐标缓冲区有6个顶点。
vertex_buffer[0] -> texture_coordinates_buffer[0]
vertex_buffer[1] -> texture_coordinates_buffer[1]
vertex_buffer[2] -> texture_coordinates_buffer[2]
vertex_buffer[3] -> texture_coordinates_buffer[3]
vertex_buffer[4] -> texture_coordinates_buffer[1]
vertex_buffer[5] -> texture_coordinates_buffer[2]
...
感谢每一个小小的提示,在哪里寻找什么。
答案 0 :(得分:0)
哦,好的,没关系。在这里找到答案(显然不可能):openGL glDrawElements with interleaved buffers
答案 1 :(得分:0)
你不能在OpenGL(或Direct3D)中这样做。属性数组中的元素数量必须全部相等,例如如果你有一个由64个顶点构成的VBO,你将需要64个texcoords,64个法线等。
获得此特定映射的唯一方法是将texcoords作为额外缓冲区数据传递,并使用gl_VertexID
获取它并解析映射。
请参阅扩展程序texture_buffer_object。