OpenGL中的正交投影矩阵

时间:2014-11-12 18:05:52

标签: opengl

我正在尝试实现正交相机。当我使用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);

我可以通过将相机的投影矩阵设置为正交矩阵来获得可见图像,而无需更改相机的更新代码。 所以,我认为这种方法必须奏效。但我所看到的只是黑屏。要做什么?

2 个答案:

答案 0 :(得分:0)

使用glutOrtho2d。如果您有任何疑问,请参阅链接

https://www.opengl.org/sdk/docs/man2/xhtml/gluOrtho2D.xml

答案 1 :(得分:0)

标识投影矩阵将视口的左上和右下范围放在(-1,+ 1)和(+ 1,-1)而没有透视效果,这样"默认情况下" OpenGL为您提供了一个正交投影,其中屏幕的左上角是(-1,+ 1),右下角是(+ 1,-1)。