我正在尝试实现正交相机。当我使用DirectX时,可以以某种方式确定正交投影矩阵。普通的纹理矩形可能表示如下:
auto l = -screenWidth / 2 + rectPosition.X;
auto r = l + rectWidth;
auto t = screenHeight / 2 - rectPosition.Y;
auto b = t - rectHeight;
float vx [] =
{
l, t, 0, 1, 0, 0, // x y z w u v
r, b, 0, 1, 1, 1,
l, b, 0, 1, 0, 1,
l, t, 0, 1, 0, 0,
r, t, 0, 1, 1, 0,
r, b, 0, 1, 1, 1,
};
正交矩阵可以这样设置:
ortho(screenWidth,screenHeight,0.1f,1000.f);
我可以通过将相机的投影矩阵设置为正交矩阵来获得可见图像,而无需更改相机的更新代码。 所以,我认为这种方法必须奏效。但我所看到的只是黑屏。要做什么?
答案 0 :(得分:0)
使用glutOrtho2d。如果您有任何疑问,请参阅链接
答案 1 :(得分:0)
标识投影矩阵将视口的左上和右下范围放在(-1,+ 1)和(+ 1,-1)而没有透视效果,这样"默认情况下" OpenGL为您提供了一个正交投影,其中屏幕的左上角是(-1,+ 1),右下角是(+ 1,-1)。