标准化设备坐标到窗口坐标

oko*_*man 3 theory 3d graphics

我刚读了一些关于3D图形背后的理论的东西.据我了解,标准化设备坐标(NDC)是描述水平轴和垂直轴上从-1到1的间隔中的点的坐标.另一方面,窗口坐标描述窗口(0,0)和(宽度,高度)之间的某个点.所以我的公式将NDC坐标系中的一个点转换为窗口系统

xwin = width + xndc * 0.5 * width
ywin = height + ynfv * 0.5 * height
Run Code Online (Sandbox Code Playgroud)

现在的问题是,在glViewport的OpenGL文档中还有另一个公式:

xwin = ( xndc + 1 ) * width * 0.5 + x
ywin = ( yndc + 1 ) * height * 0.5 + y
Run Code Online (Sandbox Code Playgroud)

现在我想知道我错了什么.特别是我想知道额外的"x"和"y"是什么意思.

希望问题不是"没有编程相关",但我认为它与图形编程有关.

小智 9

Viewport不一定从(0; 0)开始,因此OpenGL文档中的'x'和'y'指的是视口起始位置.

要查看等式有什么问题,请尝试变换(0; 0)标准化位置,然后得到(宽度;高度)而不是(宽度/ 2;高度/ 2).