2

我期待 gl_Position 自动得到均质化(除以 w),但它似乎不起作用..为什么以下会产生不同的结果?

1) void main() { vec4 p; ...省略... gl_Position = projectionMatrix * p; }

2) ... 同上 ... p = projectionMatrix * p; gl_Position = p / pw;

我认为这两者应该产生相同的结果,但似乎并非如此。1 不工作,而 2 按预期工作。这可能是精度问题吗?我错过了什么吗?这让我几乎发疯了..需要帮助。提前谢谢了!

4

2 回答 2

2

透视分割不能在裁剪之前完成,这发生顶点着色器完成之后。所以没有理由你可以观察到顶点着色器中的 w 划分。

不过,GL 将在三角形光栅化之前进行透视分割,在片段着色器运行之前。

你想做什么不起作用?

于 2010-04-17T09:21:37.490 回答
1

从 GLSL 规范 1.2:

变量 gl_Position 仅在顶点语言中可用,用于编写 同质顶点位置。

所以它不会自动同质化。

于 2010-04-17T08:10:04.653 回答