使用顶点时,如何通过着色器传递数据,苔丝。控制,苔丝。评估、几何和片段着色器。我试过以这种方式使用接口块。
//vertex shaders
out VS_OUT { ... } vs_out;
比我在镶嵌控制着色器中编写的代码:
in VS_OUT { ... } tc_in;
out TC_OUT { ... } tc_out;
因此,镶嵌控制着色器为每个顶点调用一次。这是否意味着 tc_in 必须不是数组而是单个变量。由于偷偷摸摸的 gl_InvocationID,我不太确定。
然后事情变得艰难。细分评估着色器。有些东西告诉我评估着色器应该将接口块作为数组。
in TC_OUT { ... } te_in[];
out TE_OUT { ... } te_out[];
移动到几何着色器。几何着色器需要多个顶点,因此,绝对是数组接口块。
in TE_OUT { ... } gs_in[];
out vec3 random_variable;
...
random_variable = gs_in[whatever_index];
对我来说似乎是合法的,但数据没有进入片段着色器。
我会很感激任何建议。