我正在尝试使用着色器绘制图形。我分别有 x 和 y 数据,我想将它们分别传递给着色器。我目前正在做的方式是像 x0,y0,x1,y1,... 一样交错它们并使用单个顶点属性
attribute vec2 coord2d;
我通过交错的数据,然后通过
coord2d.xy
我获取样本点。但是我不想通过交错数据加载 CPU。有什么方法可以将我的 x 和 y 数据传递给单独的顶点属性,并让着色器从中获取样本。
使用标量属性,你会在你的顶点着色器中有这样的东西:
attribute float coord_x;
attribute float coord_y;
当需要使用这些坐标进行采样时:
vec2 (coord_x, coord_y)
在着色器之外,您将有两个顶点属性指针而不是 1 个。每个都有 1 个组件,因此它们看起来像这样:
glVertexAttribPointer (coord_x_loc, 1, GL_FLOAT, GL_FALSE, 0, ...);
glVertexAttribPointer (coord_y_loc, 1, GL_FLOAT, GL_FALSE, 0, ...);