0

有没有办法为 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]

...

感谢每一个小提示在哪里寻找什么。

4

1 回答 1

0

你不能在 OpenGL(或 Direct3D)中做到这一点。属性数组中的元素数量必须全部相等,例如,如果您有一个由 64 个顶点组成的 VBO,则需要有 64 个 texcoords、64 个法线等。

拥有此特定映射的唯一方法是将 texcoords 作为额外的缓冲区数据传递并用于gl_VertexID获取它并解析您的映射。

请参阅扩展texture_buffer_object

于 2010-10-08T20:08:52.607 回答