【发布时间】:2021-10-25 07:45:27
【问题描述】:
我在 3d 空间中有四个任意点 (lt,rt,rb,lb),我希望这些点来定义我的近剪裁平面(lt 代表左上,rt 代表右上等等)。 不幸的是,这些点不一定是矩形(在屏幕空间中)。然而,它们是世界坐标中的一个矩形。
上下文是我想通过将镜像世界计算为纹理来获得镜面。镜子是 3d 空间中任意平移和旋转的矩形。 我不想更改顶点上的纹理坐标,因为这会导致丑陋的像素化,例如从侧面看镜子。当我这样做时,剔除也无法正常工作,这会导致对我的情况产生巨大的性能影响(小镜子,大世界)。
我也无法使用模板缓冲区,因为在某些情况下,我的镜像彼此面对,这也会导致性能大幅下降。此外,我想让我的渲染管道保持简单。
谁能告诉我如何计算相应的投影矩阵?
编辑:因为我已经相应地移动了我的相机。这不是这里的问题。
【问题讨论】:
-
我不认为您可以将近裁剪平面更改为任何其他任意平面,只需使用投影矩阵即可。它始终是最小 Z 值。也许有办法做到这一点,但它仍然会弄乱你的深度缓冲区,因为最小剪切平面上的所有东西都必须有最小 Z。
标签: opengl projection clipping projection-matrix