opengL:glsl 着色器中的镜像对象

cla*_*amp 1 opengl 3d glsl

是否可以仅在顶点着色器中沿某个轴镜像对象?

如果我只是在投影矩阵中将一个轴按 -1 缩放,我会得到不好的剔除,并且需要在应用程序中将剔除从背面更改为正面。有没有办法在不改变剔除的情况下做到这一点?

谢谢!

dat*_*olf 5

剔除是基于所谓的面手性完成的,即绘制顶点的旋转方向。反射的核心特性是改变手性。因此,您将不可避免地必须切换剔除行为,因为背面/正面剔除纯粹是在屏幕空间的手性上发生的。

您可以使用几何着色器来交换每个三角形的两个顶点,这也将切换手性。但坦率地说:反射需要一些额外的预防措施,例如模板遮罩等;切换剔除功能也没什么大不了的。