OpenGL:通过给定的4乘4矩阵在3D中更改相机视口

时间:2014-08-15 18:18:33

标签: opengl

我现在正试图在给定的4乘4矩阵下更改摄像机的视口

R11 R12 R13  transx
R21 R22 R23  transy
R31 R32 R33 transz
0    0    0     1

R是3乘3的旋转矩阵,而transx,transy,transz是在3D空间中沿x,y和z轴平移。

我的代码如下

eyex = transx;
eyey = transy;
eyez = transz;

atx = transx;
aty = transy;
atz = transz+1;

gluLookAt (R11*eyex + R12*eyey + R13*eyez, R21*eyex + R22*eyey + R23*eyez, R31*eyex + R32*eyey + R33*eyez, atx, aty, atz,  0.0, 1.0, 0.0);

但是,我无法得到正确的结果。 (旋转似乎没问题,但翻译时会出现问题)

有人可以在我的代码中收到错误吗?

1 个答案:

答案 0 :(得分:0)

不确定你想做什么,但你似乎很困惑。 gluLookAt是一个为您生成cam-to-world矩阵的函数,通过传递给函数,眼睛位置和您正在查看的点。简而言之,它既可以使用gluLooAt来构建矩阵,也可以自己为相机构建矩阵,并使用它来设置OpenGL cam-to-world矩阵。

在OpenGL4中,这将在CPU上完成(构建该矩阵),然后将其加载到顶点着色器中。最后,您将把对象转换为世界空间,然后在相机空间中转换世界空间中的顶点,最后使用透视投影矩阵进行投影。

您可以在本网站上找到一些信息:www.scratchapixel.com