OpenGL:反射矩阵问题

时间:2014-06-05 12:16:42

标签: opengl reflection matrix mirror

我正在研究我的OpenGL场景(基本上由一个天空立方体和一个小的白色立方体组成)。反射应该发生在xz平面上(y = 0)。我已设法将其渲染到FBO中,但目前视图或预期矩阵存在一些问题。反射是从错误的视图位置看到的,或者只是反转屏幕上看到的内容。

然而,我需要的是一个真实的镜像反射。在大多数教程中,他们说你应该只缩放(1,-1,1)视图矩阵或使用gl_scalef(1,-1,1),但这些都不适用于我 - 效果如上所述。

下面是我目前获得的两个截图,在渲染(镜像)场景之前立即使用以下代码:

view = m_camera*mat4::scale(1,-1,1);
projection = m_cameraPerspective;

对应的原始场景: Original scene

反射场景: Reflected scene

注意,这实际上是如何反射的场景(例如,从顶部看到的云是可见的而不是从底部看到的水 - 如在原始渲染中那样)但是位置在某种程度上是不正确的,例如,白色立方体是不在屏幕上的相同位置,例如,与窗口边界的距离不同。)

请忽略错误的颜色。那是因为我快速攻击了一个将像素值写入tga文件的函数(来自渲染纹理)。当实际启用渲染镜像平面上的纹理时(目前在两个渲染步骤中都禁用了),颜色是正确的。

我的反射矩阵出了什么问题?

1 个答案:

答案 0 :(得分:1)

正如评论中所述,这实际上是正确的。

相关问题