opengl - 正射投影导致几何被远平面剪裁
问题描述
假设我有一个矩形,我想将其渲染为关于 x 轴的 45 度角到相机。所以它看起来像这样:
(仅因为它是窗口的边缘而被剪裁在底部)。
当我沿着它的局部 y 方向移动这个矩形时(即在我们围绕 x 轴旋转它之前增加它的顶点上的 y)然后它最终被远平面剪裁:
我该如何防止这种情况?当从视口移开但仍在实际视图中时,矩形应该被完全切断,这似乎是不自然的。
我确实想以正交方式渲染我的矩形。
我对 OpenGL 很陌生,所以我想我在这里遗漏了一些东西。
解决方案
原来的技巧只是挤压顶点着色器中顶点的 z 位置。这样更多的顶点可以容纳在截锥体内。这确实会扭曲网格,但在正交投影中,这实际上并没有产生明显的差异(至少在我的情况下)。
即在顶点着色器中执行以下操作:
gl_Position.z *= 0.5; // or whatever scale you want
推荐阅读
- c# - 在 Visual C# 中的两个 Windows 窗体之间切换和通信?
- reactjs - 为什么 tesseract 不能在带有反应的浏览器中工作?
- asp.net-mvc - 方法被调用两次
- python - 如何将张量更改为 NumPy?
- c# - C#正则表达式提取多个结构键值
- php - 有没有更好的方法来检查一个集合是否包含一个字段然后是多个 isset?
- reactjs - 由于服务器和客户端中的 className 不同,Material UI 中定义的 withStyle 出现问题
- reactjs - 不明白为什么重复数据被复制到我的反应组件中的 url
- python-3.x - gobject-2.0-0 无法在 macbook 上加载
- javascript - 如何防止执行某行 Javascript 代码?