【问题标题】:How can I make the glOrtho parallelepiped rotating?如何使 glOrtho 平行六面体旋转?
【发布时间】:2012-07-28 04:00:00
【问题描述】:

我已经渲染了我的世界。根据一些特定要求,它包括(有时)地板上的一些灯。我正在使用三角形基元渲染这些灯光。现在我有以下代码来缩放和限制渲染区域:

            if(aspect>1)    
                gl.glOrtho(-scale*aspect, scale*aspect, -scale, scale, 0, 2);
            else
                gl.glOrtho(-scale, scale, -scale/aspect, scale/aspect, 0, 2);

正如您在这张图片中看到的那样,远平面将光线穿过一条线(平行于 B 和 D 之间的圆上的线)

当我旋转我的场景时会出现问题...... glOrtho“盒子”保持固定。您可以通过始终查看灯上的切割线来注意到它。它不再与B和D之间的线平行......

我的一个朋友推荐了我的this document。基本上它解释了如何提取平截头体平面......

但这意味着我应该手动检查每个原语是否在里面..

有没有使用 glOrtho 调用的方法?

我想得到这样的东西:

【问题讨论】:

  • 抱歉,您的问题到底是什么,您已经尝试过什么。 “光”是什么意思?我所看到的只是一些黄色的形状。
  • @datenwolf 是的,“光”是指淡黄色的形状。问题是我想让远平面在我的场景旋转时旋转。相反,它保持固定。您可以在第一张图像中看到,远平面始终垂直于观察者方向(或字体 B 和 D 之间的线)切割场景。在第二张图片中,我的场景被旋转了,但远平面没有。如果还不清楚,请告诉我
  • 如果我理解你的问题,你想知道截锥体的远平面是否可以随场景旋转?在那种情况下,我不相信你可以通过视锥体来渲染场景。如果您需要一个始终垂直于 B 和 D 之间的线的平面,则需要自己绘制该平面。
  • @AlcoJaguar 好的,谢谢你的信息。但是,只有当 BD 线在特定的 180° 范围内时,才能绘制平面。你知道我怎样才能让它始终工作吗?

标签: opengl rotation plane frustum orthogonal


【解决方案1】:

好的,经过 cmets 中的选择者解释后,答案是:您对查看体积剪辑平面的概念有误解。

它们不是某种与场景对齐的边界框。

近端和远端剪裁平面是屏幕到世界的某种投影,根据定义,它们始终与视图对齐。您对此无能为力,因为这是 OpenGL 使用的数学基础。

在 OpenGL 中也不可能让图元向无穷大扩展,因此无论如何都必须以某种方式限制几何体。

【讨论】:

  • 感谢您的解释。但是,您知道一些创建边界框的技术吗? @datenwolf
  • @elect:这取决于你想要的视觉效果。不如你用 Photoshop 手动绘制,你想看到什么并在这里发布?
  • @elect:你为什么不简单地画一个三角形,远边在所需距离处?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-14
  • 1970-01-01
  • 2020-01-01
  • 2018-06-05
  • 2013-12-05
相关资源
最近更新 更多