避免OpenGL缓冲区中的重复数据
我正在尝试在OpenGL中绘制一张由瓷砖制成的地图(至少是3.3版)。我目前的做法是将地图上每个平铺的所有顶点数据编译成单个数组,并将这些数据绑定到顶点数组中的缓冲区。法线和纹理坐标也是如此;每个都有自己的缓冲区。然后会有一个指向该数据的顶点属性指针,以便顶点着色器获得该数据 也就是说,当每个瓷砖都有自己的颜色时,这是一种单一的纯色(不是纹理或渐变),我实际上是将一个与顶点数组大小相同的数组传递到着色器中,即使瓷砖的所有6个顶点的颜色都是恒定的!这看起来非常浪费,因为它本质上是相同的数据x6。渲染贴图时,是否有一种方法可以有效地每隔6个顶点重用相同的数据 我会为每个图块使用统一的或属性,但请记住,所有图块都放置在一个顶点数组中,因此我无法分别为每个图块重新绑定它们避免OpenGL缓冲区中的重复数据,opengl,attributes,glsl,shader,Opengl,Attributes,Glsl,Shader,我正在尝试在OpenGL中绘制一张由瓷砖制成的地图(至少是3.3版)。我目前的做法是将地图上每个平铺的所有顶点数据编译成单个数组,并将这些数据绑定到顶点数组中的缓冲区。法线和纹理坐标也是如此;每个都有自己的缓冲区。然后会有一个指向该数据的顶点属性指针,以便顶点着色器获得该数据 也就是说,当每个瓷砖都有自己的颜色时,这是一种单一的纯色(不是纹理或渐变),我实际上是将一个与顶点数组大小相同的数组传递到着色器中,即使瓷砖的所有6个顶点的颜色都是恒定的!这看起来非常浪费,因为它本质上是相同的数据x6。渲
当前的方法确实有效,而且速度相当快(GT 750m上256x256瓷砖的速度为2000 fps),但我忍不住为简单地在整个阵列中复制数据而感到内疚,因此它匹配每个顶点,即使每个基本体的数据都是恒定的(事实上是两个基本体:构成方形瓷砖的两个三角形)。他们肯定是更好的方法吗?你有各种方法来克服你的问题