如何在渲染box2Dlights时调整视口?

时间:2016-08-25 23:07:46

标签: java libgdx box2d viewport box2dlights

我正在使用Libgdx和Box2Dlights编写类似于Don't Starve 的游戏。我有一个平面世界,在这个表面上有一些广告牌。因此使用了透视摄像头。屏幕法线与表面法线(地面)之间的夹角为45°。这些物体中的一些向所有方向(篝火)发光。所以 RayHandler 类用于处理这些问题。设置 RayHandler 组合矩阵的方法需要视口宽度和高度。当透视摄影机视口传递给此方法时,渲染的光线在其中心离开屏幕后会消失。只有当它完全离开屏幕(不仅仅是中心)时,应该做些什么才能使光线消失,这样用户就不会看到它消失的那一刻?谢谢。

更新:

方法rayHandler.setCombinedMatrix(camera);需要 OrthographicCamera 。我使用的相机是透视。这就是为什么我不可能使用rayHandler.setCombinedMatrix(camera)。我唯一的选择是使用setCombinedMatrix(Matrix4 combined, float x, float y, float viewPortWidth, float viewPortHeight)。我可以将 PerspectiveCamera 组合矩阵与其位置和视口一起传递,但是它没有给出所需的结果,因为它仍然提供了错误的视口(可能是因为它不考虑相机处于3D空间并倾斜的事实。

1 个答案:

答案 0 :(得分:0)

由于您没有提供任何代码,只是提供了一些可能对您有帮助的背景:光线处理程序使用剔除来确保安全性能:它不会渲染屏幕上的灯光。屏幕边界由

的输入计算
rayHandler.setCombinedMatrix(camera);

您必须在render()之前的rayHandler.updateAndRender()方法中调用它,以便及时更新。

https://github.com/libgdx/box2dlights/wiki/How-To