计算机图形坐标与 glu (OpenGL)

Computer Graphics Coordinates with glu (OpenGL)

我很难弄清楚 glu 中的坐标系是如何工作的,有几个问题需要解决。

GLJPanel canvas = new GLJPanel();
frame.setSize(400,600); // Size in pixels of the frame we draw on
frame.getContentPane().add(canvas);

glu.gluOrtho2D(-100.0, 100.0, -200.0, 200.0);

gl.glViewport(100,100,200,300);

如果一个点有世界坐标(-50,-75),它在视口坐标系中的坐标是多少?

和另一个(不是真正具体的代码):

gluOrtho2D(-1.0, 0.0, -1.5, 0.0) and glViewport(0,300,200,300)
gluOrtho2D(0.0, 1.0, 0.0, 1.5) and glViewport(200,0,200,300)

两条被截断的精灵曲线应该放在哪里?

现在我想我可以解决这些问题,但是我不知道坐标系是如何工作的。

世界坐标是任意的,你可以选择它们。在这种情况下,(-50, -75).

MVP 矩阵和投影变换将它们转换为 clip space 坐标 从 (-1, -1, -1) 到 (+1, + 1,+1)。在这种情况下,(-0.5,-0.375)。此转换受您使用 gluOrtho2D() 的影响,或者在更现代的程序中,受顶点着色器输出的影响。

视口坐标为像素,在本例中为 (100, 100) 到 (300, 400)。您只需缩放剪辑 space 坐标即可转换。像素中心位于半整数坐标,因此 window 的左下像素位于 (0.5, 0.5)。您的点位于 (200, 193.75)。此转换受使用 glViewport().

的影响

我不知道 "genie curve" 是什么。