我现在正试图在给定的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);
但是,我无法得到正确的结果。 (旋转似乎没问题,但翻译时会出现问题)
有人可以在我的代码中收到错误吗?
答案 0 :(得分:0)
不确定你想做什么,但你似乎很困惑。 gluLookAt是一个为您生成cam-to-world矩阵的函数,通过传递给函数,眼睛位置和您正在查看的点。简而言之,它既可以使用gluLooAt来构建矩阵,也可以自己为相机构建矩阵,并使用它来设置OpenGL cam-to-world矩阵。
在OpenGL4中,这将在CPU上完成(构建该矩阵),然后将其加载到顶点着色器中。最后,您将把对象转换为世界空间,然后在相机空间中转换世界空间中的顶点,最后使用透视投影矩阵进行投影。
您可以在本网站上找到一些信息:www.scratchapixel.com