0

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

attribute vec2  coord2d;

我通过交错的数据,然后通过

coord2d.xy

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

4

1 回答 1

3

使用标量属性,你会在你的顶点着色器中有这样的东西:

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, ...);
于 2013-09-13T04:22:54.547 回答