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