我目前正在实现反射(使用渲染到纹理方法),到目前为止它的工作原理,唯一的问题是反射版本中的所有对象都是在里面渲染出来的。
我想避免更改内部OpenGL顶点绕组顺序,以确保我不会过多地干扰其他渲染操作。
相反,我想转换我的反射矩阵来进行反转。 (这应该只是另一种反思?)
这是我的反射矩阵(它会转换相机的视图矩阵):
glm::mat4 matReflection(
1.f -2.f *n.x *n.x,-2.f *n.x *n.y,-2.f *n.x *n.z,-2.f *n.x *d,
-2.f *n.x *n.y,1.f -2.f *n.y *n.y,-2.f *n.y *n.z,-2.f *n.y *d,
-2.f *n.x *n.z,-2.f *n.y *n.z,1.f -2.f *n.z *n.z,-2.f *n.z *d,
0.f,0.f,0.f,1.f
);
n =反射平面的法线; d =飞机的距离
甚至可以通过矩阵变换反转顶点顺序吗?如果是这样,究竟是怎么回事?
答案 0 :(得分:1)
如果在所有其他变换(包括投影)之后应用矩阵将y轴缩放-1,最终会得到一个颠倒的图像(可以通过包含类似uv.y = 1的内容来使用) -uv.y在你的管道中的某个地方。)