顶点和纹理坐标的缓冲区大小不同?
Posted
技术标签:
【中文标题】顶点和纹理坐标的缓冲区大小不同?【英文标题】:Different size of Buffers for Vertex and Texture Coordinates? 【发布时间】:2010-10-08 20:00:58 【问题描述】:有没有办法为 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]
...
感谢您提供的每一个小提示。
【问题讨论】:
【参考方案1】:您不能在 OpenGL(或 Direct3D)中做到这一点。属性数组中的元素数量必须全部相等,例如如果你有一个由 64 个顶点组成的 VBO,你将需要有 64 个 texcoords、64 个法线等。
拥有此特定映射的唯一方法是将 texcoords 作为额外的缓冲区数据传递并使用 gl_VertexID
获取它并解析您的映射。
见分机texture_buffer_object。
【讨论】:
以上是关于顶点和纹理坐标的缓冲区大小不同?的主要内容,如果未能解决你的问题,请参考以下文章
在OpenGL ES(Android)中使用带纹理的索引缓冲区有什么意义吗?