我一直在使用内置顶点索引的 gl_VertexID 遇到问题,该索引使用 in
传递,用于 Three.js
我不确定为什么,因为文档说它适用于所有版本的 OpenGL
http://www.opengl.org/sdk/docs/manglsl/xhtml/gl_VertexID.xml
我正在使用这个顶点着色器:
uniform int freqData[64];
uniform int fftSize;
in int gl_VertexID;
void main() {
vec3 norm = normalize(position);
int modFFT = mod(gl_VertexID, fftSize);
vec3 newPosition = norm * float(freqData[modFFT]);
gl_Position = projectionMatrix * modelViewMatrix * vec4( newPosition, 1.0 );
}
我收到的错误是:
错误:0:68:'in':语法错误
in
声明似乎有问题,而且它没有提示任何其他内容(错误控制台能够检测到多个编译错误)。
非常感谢你的帮助,我正在处理昨天的 Three.js 构建。
最佳答案
据我所知,在 WebGL 中您无法访问内置的顶点索引。
但是,您应该能够通过提供自己的自定义属性流来模拟这一点,并将其设置为等同于此类内置索引流的值。
在 three.js 中还没有实现整数自定义属性,所以你需要使用 float 属性。
在此示例中检查“位移”属性:
http://mrdoob.github.com/three.js/examples/webgl_custom_attributes.html
关于glsl - 在 int gl_VertexID 中导致 three.js 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11658031/