glsl - 在 int gl_VertexID 中导致 three.js 出错

标签 glsl webgl three.js

我一直在使用内置顶点索引的 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/

相关文章:

javascript - WebGL VS Canvas 二维硬件加速

math - 在 GL ES 中将片段着色器渐变结果从黑色转换为透明

javascript - WebGL/Three.js 一个复杂物体上的不同 Material (网格)

javascript - 用 three.js 修改三 Angular 形

c++ - GLSL 中光线行进曲面的实现

opengl - 向量 vec3 和 float 的 GLSL 总和

javascript - 从深度重建片段位置

javascript - 设置 View 矩阵

javascript - 测量 3d 模型的距离?

glsl - 检查属性是否提供给着色器