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

How and when does viewport change happen in OpenGL? (glViewport)

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

在OpenGL中,我们通常在reshape回调中使用glViewport函数。 听说glViewport跟viewport transformation有关

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

视口变换什么时候起作用?

我猜如果顶点着色器将顶点信息输出到光栅化器,然后管道会转换这些顶点信息。

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

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

对吗?

In OpenGL, we usually use glViewport function in reshape callback

不,"we"不。 glViewport属于展示功能

Consequently, I thought glViewport just set how to work viewport transformation after finishing vertex shader work.

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