OpenGL着色器多个顶点属性

时间:2013-09-13 04:13:07

标签: opengl graph plot shader

我正在尝试使用着色器绘制图形。我分别有x和y数据,我想将它们分别传递给着色器。我目前正在做的方式是交错它们,如x0,y0,x1,y1,...并使用单个顶点属性

attribute vec2  coord2d;

我传递交错数据,然后传递

coord2d.xy

我获得了样本点。但是我不想加载CPU来交错数据。有什么方法可以将我的x和y数据传递给单独的顶点属性,并让着色器从那些中获取样本。

1 个答案:

答案 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, ...);