我刚读了一些关于3D图形背后的理论的东西。据我了解,标准化设备坐标(NDC)是描述水平轴和垂直轴上从-1到1的间隔中的点的坐标。另一方面,窗口坐标描述窗口(0,0)和(宽度,高度)之间的某个点。 所以我将NDC坐标系中的一个点转换为窗口系统的公式将是
xwin = width + xndc * 0.5 * width
ywin = height + ynfv * 0.5 * height
现在的问题是,在glViewport的OpenGL文档中还有另一个公式:
xwin = ( xndc + 1 ) * width * 0.5 + x
ywin = ( yndc + 1 ) * height * 0.5 + y
现在我想知道我错了什么。特别是我想知道额外的“x”和“y”是什么意思。
希望问题不是“没有编程相关”,但我认为它与图形编程有关。
答案 0 :(得分:9)
视口不一定从(0; 0)开始,因此OpenGL文档中的'x'和'y'指的是视口起始位置。
要查看等式有什么问题,请尝试转换(0; 0)标准化位置,然后得到(宽度;高度)而不是(宽度/ 2;高度/ 2)。