0
我目前正在研究我的OpenGL场景(基本上由一个skycube和一个小的白色立方体组成)的反射。反射应该发生在xz平面上(y = 0)。我已经设法将它变成FBO,但目前在视图或预测矩阵中存在一些问题。反射要么从错误的视角位置看到,要么只是反转屏幕上显示的内容。OpenGL:反射矩阵问题
然而,我需要的是一种真实的镜像反射。在大多数教程中,他们说你应该缩放(1,-1,1)视图矩阵或使用gl_scalef(1,-1,1),但这些都不适用于我 - 效果如上所述。
下面是我目前得到最好的两张截图,使用下面的代码立即渲染(被镜像)场景前:
view = m_camera*mat4::scale(1,-1,1);
projection = m_cameraPerspective;
相应的原始场景:
反映的场景:
请注意,这实际上是如何反映的场景(例如,顶部的云是可见的而不是水从底部 - 与原始渲染一样),但是位置在某种程度上不正确,例如,白色立方体不在屏幕上的相同位置,例如与窗口边界的距离不同。
请忽略错误的颜色。这是因为我快速入侵了一个将像素值写入tga文件(从渲染纹理中)的函数。当实际启用渲染镜像平面上的纹理(这两个渲染步骤当前都禁用)时,颜色是正确的。
我的反射矩阵有什么问题?
很难看到截图是否有误。但它可能是正确的。相机可能看起来有点向下。所以多维数据集可以改变它到窗口边界的距离。代码看起来不错,所以结果应该是正确的。 –
是的,我只是设法在镜面上正确地打印它,并看到镜像按预期工作。一旦关闭的最短等待时间结束,我会尽快结束这一切。 – pedjjj