在 OpenGL 中如何以及何时发生视口更改?(glViewport)



我有一个关于计算机图形管道的问题。

在 OpenGL 中,我们通常在 reshape 回调中使用 glViewport 函数。我听说 glViewport 与视口转换有关。

在我们的顶点着色器中,我们通常计算顶点并使这些顶点在裁剪坐标(规范化裁剪立方体)中定义。

视口转换何时起作用?

我想如果顶点着色器将顶点信息输出到光栅器,那么管道会转换这些顶点信息。

X(v) = (x + 1)/2 * 宽度 + 左侧y(v) = (y + 1)/2 * 高度 + 底部。(视口转换)

因此,我认为 glViewport 只是设置了完成顶点着色器工作后如何进行视口转换。

对吗?

在 OpenGL 中,我们通常在 reshape 回调中使用 glViewport 函数

不,"我们"没有。 glViewport属于显示功能。

因此,我认为 glViewport 只是设置了完成顶点着色器工作后如何进行视口转换。

是的,这就是它的工作原理。本质上,视口只是另一个变量,与统一变量没有太大区别,其中包含顶点转换步骤的参数。但是,由于转换的最后步骤,均匀划分和裁剪是硬连线的,视口转换在此之后发生,必须单独设置。

最新更新