kam*_*iro 6 glsl geometry-shader
所以我现在已经尝试了一段时间,将顶点属性数组传递给几何着色器.它是一个float数组(其中每个顶点的属性只是一个浮点值)
现在,当我把它放在几何着色器中时:
attribute float nodesizes;
Run Code Online (Sandbox Code Playgroud)
着色器编译器抱怨:
OpenGL requires geometry inputs to be arrays
Run Code Online (Sandbox Code Playgroud)
我如何完全传递它?
另外,这是我的顶点属性的代码:
glBindAttribLocation(programid, 1, "nodesizes");
glVertexAttribPointer(1, 1, GL_FLOAT, GL_FALSE, 0, array);
glEnableVertexAttribArray(1);
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?
几何着色器不会获取属性.顶点着色器得到attributes并输出varyings(用旧语法说).然后可以在几何着色器中读取它们,但作为数组,一个几何着色器调用遵循多个顶点着色器调用.像这样的东西:
顶点着色器:
attribute float nodesize;
varying float vNodesize;
void main() {
...
vNodesize = nodesize;
...
}
Run Code Online (Sandbox Code Playgroud)
几何着色器:
varying float vNodesize[];
void main() {
...vNodesize[i]...
}
Run Code Online (Sandbox Code Playgroud)
名称是任意的,但当然两个着色器中的变化名称必须匹配.我希望你不要搞乱顶点着色器和几何着色器这两个术语.
| 归档时间: |
|
| 查看次数: |
4433 次 |
| 最近记录: |