【发布时间】: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