Opengl 当存在几何体着色器时,是否需要写入顶点着色器中的“gl_位置”

Opengl 当存在几何体着色器时,是否需要写入顶点着色器中的“gl_位置”,opengl,glsl,Opengl,Glsl,假设我有一个几何体着色器,它从[].gl_位置中的gl_以外的一些输入计算其输出gl_位置。如果之前的管道阶段(顶点和细分)未写入其输出gl_位置,整个管道的动作是否仍保持良好定义 或者换句话说,gl\u Position的值在几何体着色器完成之前是否对gl的功能有任何影响?如果不是的话,这意味着我可以简单地将其作为一个额外的槽来传递数据,而不需要在阶段之间进行任何特殊的空间解释,对吗 (问题假设OpenGL 4.5正向配置文件。)gl_位置只需要在渲染管道的最后阶段(VS、细分和GS)编写。因

假设我有一个几何体着色器,它从[].gl_位置中的
gl_以外的一些输入计算其输出
gl_位置
。如果之前的管道阶段(顶点和细分)未写入其
输出gl_位置
,整个管道的动作是否仍保持良好定义

或者换句话说,
gl\u Position
的值在几何体着色器完成之前是否对gl的功能有任何影响?如果不是的话,这意味着我可以简单地将其作为一个额外的槽来传递数据,而不需要在阶段之间进行任何特殊的空间解释,对吗


(问题假设OpenGL 4.5正向配置文件。)

gl_位置
只需要在渲染管道的最后阶段(VS、细分和GS)编写。因此,如果您有一个活动的GS,那么连接到它的VS根本不需要写入
gl\u位置。或者它可以将任意
vec4
数据放入其中

请注意,
gl_Position
仍然需要由最终顶点处理阶段编写。当然,假设您想要光栅化。不,这不是轻率;你可以做转化反馈

如果不是的话,这意味着我可以简单地将其作为一个额外的槽来传递数据,而不需要在阶段之间进行任何特殊的空间解释,对吗

如果存在GS,则先前着色器阶段的任何输出都不会具有“任何特殊的空间解释”<代码>总账位置在这方面并不特殊


插值是光栅化器的一个功能,它发生在顶点处理之后。实际上,在GLSL 4.30+中,片段着色器输入上的插值限定符是唯一重要的限定符。它们甚至不再用于接口匹配。

答案很好。我只是想在规范中找到一个地方来证实这一点。到目前为止,我的最佳候选对象是:“着色器执行产生顶点坐标gl_位置的顶点结果的剪辑坐标。”来自“gl4.4核心部分13.6”和等效的“顶点结果的剪辑坐标,或者,如果激活,几何体着色器执行产生顶点坐标gl_位置。”来自“gl3.3核心部分2.13”。我来对地方了吗?