【问题标题】: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]

...

感谢您提供的每一个小提示。

【问题讨论】:

    标签: opengl textures vbo


    【解决方案1】:

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

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

    见分机texture_buffer_object

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-04
      • 2014-07-31
      • 1970-01-01
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      相关资源
      最近更新 更多