几何着色器中的OpenGL gl_Postion

问题描述 投票:0回答:1

我将顶点从顶点着色器传递到几何着色器。我正在几何着色器中进行透视投影。据我了解,在片段着色器之前,OpenGL 将

gl_Position
向量除以
w
分量。这是发生在几何着色器之前还是之后?如果是在之后,有没有一种快速的方法可以在之前完成,而无需在顶点着色器中手动除以
w

编辑:现在我的顶点着色器就结束了。

gl_Position = proj*view*model*vPos;
gl_Position = (1.0/gl_Position.w)*gl_Position;
opengl vertex-shader geometry-shader
1个回答
0
投票

OpenGL 将

gl_Position
向量除以
w
分量。

不,事实并非如此。它将要光栅化的顶点的剪辑空间位置除以剪辑空间位置的

w
坐标。顶点的剪辑空间位置是光栅化之前最后一个
顶点处理阶段
为该顶点发出的gl_Position的值。光栅化之前的所有着色器阶段都是顶点处理阶段。

不是最后一个顶点处理阶段可以输出到

gl_Position
,但这没有特殊意义。下一个顶点处理阶段可以将其作为输入,但该值按原样传递。

© www.soinside.com 2019 - 2024. All rights reserved.