我在通过着色器传递数据时遇到了一些麻烦,尤其是几何着色器。我之前从未使用过几何着色器,所以我很难理解它传递数据的方式。
基本上,在几何着色器之前,我只是使用输入/输出限定符将数据从顶点着色器传递到片段。就像我有:
顶点着色器!
out vec3 worldNormal;
out vec3 worldView;
Fragment Shader:
in vec3 ex_worldNorm;
in vec3 ex_worldView;
那么,对于Geometry Shader,我是否必须做这样的事情才能传递数据?
in vec3 ex_worldNorm[];
in vec3 ex_worldView[];
out vec3 ex_worldNorm[];
out vec3 ex_worldNorm[];
我的问题是,如何在每个Shader之间正确传递数据?喜欢,这是这样做的吗? (因为它不适合我!)
答案 0 :(得分:1)
输入的无界数组对于Geomtery Shader是正确的(大小将由布局限定符中的输入类型确定),但输出 不能 是阵列。
通过将值写入所有输出变量然后调用EmitVertex (...)
,您可以一次输出一个顶点。 1}}调用之间没有写入的任何输出变量都是未定义的。
EmitVertex (...)