【发布时间】:2018-03-17 18:26:10
【问题描述】:
我需要将一些变量直接从顶点着色器传递到片段着色器,但我的管道还包含一个 TCS、一个 TES 和一个 GS,它们只是做透传的东西。
我已经知道片段着色器希望从程序的最后一个链接着色器(在我的例子中是几何着色器)接收其“in”变量的值,但我不想在那里进行 MVP 和正常计算。
如何将变量从顶点着色器直接输出到片段着色器? (跳过中间的其余着色器)
这可能吗?
【问题讨论】:
-
Geometry Shader, but I don't want to do MVP and normal calculations there好吧,你可以在顶点着色器中完成它们。然后在顶点着色器和片段着色器之间的每个阶段,您只需将一些in变量复制到out变量,将您的数据转发到片段着色器。我错过了什么吗? -
试过但其他阶段(TCS,TES,GS)强制我将数组作为“in”变量传递。对于 instace,如果我在 GS 中声明输入变量,编译器会说“OpenGL 要求几何输入是数组”。
-
@jovchaos: "一个 GS 只做透传工作。" 如果 GS 什么都不做,那它为什么会存在呢? GS 不是免费的。
-
@jovchaos:“尝试过,但其他阶段(TCS、TES、GS)强制我将数组作为“in”变量传递”我似乎你真正的问题是你并不真正了解这些阶段在做什么(因为如果你这样做了,你就会明白为什么它们采用值数组以及这与 VS 的输出有何关系)。
标签: c++ opengl glsl fragment-shader vertex-shader