在同一着色器的两次运行之间重置具有禁用数组的顶点属性?

时间:2014-08-12 22:17:54

标签: opengl glsl

我想从多维数据中绘制一堆曲线。对于每条曲线,我有一个M个变量的数据集,其中每个变量都是长度为N的向量,或者只是一个标量值:

x1 = [x11,x12,.......,x1N] OR x1 = X1 (scalar value)
x2 = [x21,x22,.......,x2N] OR x2 = X2
....
xM = [xM1,xM2,.......,xMN] OR xM = XM

我的曲线着色器采用三个浮点属性x,y,z,它们代表当前显示的变量。 对于每条曲线和每个x,y,z,如果数据是向量,我将包含相应变量数据的顶点缓冲区绑定到属性。仅使用矢量数据绘制多条曲线可以正常工作。

如果某个变量的数据只是一个标量数字,我会禁用属性数组并将属性值(例如X1)设置为:

glDisableVertexAttribArray(xLocation);  
glVertexAttrib1f(xLocation,X1);

现在我的问题:似乎所有曲线都使用着色器中具有禁用数组的任何顶点属性的相同值,(即我绘制的最后一条曲线的那个),即使我重置glDrawArray()次调用之间的值。是否只能在着色器中为具有禁用数组的属性使用多个值,或者它是否可能并且我有错误?

0 个答案:

没有答案