我正在使用 libgdx 开发一个小游戏。这是一个 2D 自上而下的游戏,上面有一些大地图和许多对象。所以我只想在我的视锥中渲染东西。我看过camera.frustum.***inFrustum(Paramter... p)
. 但是我使用的是scene2d,并且我在中设置了相机Stage
,将SpriteBatch
s投影矩阵设置为,camera.combined
并且我Actor
的s在覆盖的draw(SpriteBatch batch)
方法中绘制了它们自己。我如何访问camera
那里的视锥体?有没有办法从 spritebatch 中得到它?还是有另一种方法来实现视锥体剔除?
问问题
1646 次
1 回答
1
您不需要自己执行此操作。如果您使用带有相机的舞台,它会自动绘制视图内的演员。
如果您想从舞台上访问相机,只需从舞台上获取它。stage.getCamera()
以下是如何从舞台内的相机中获取截锥体:
Camera cam = this.stage.getCamera();
Frustum f = cam.frustum;
float h = cam.viewportHeight;
float w = cam.viewportWidth;
Matrix4 m = cam.combined; //combind projection matrix
Matrix4 m2= cam.projection;
...
...
从相机中,您可以获得所需的每个投影矩阵,依此类推...
在演员内部,您可以获得舞台,而在舞台中,您可以获得上面显示的所有内容。
actor.getStage().getCamera().frustum;
于 2014-02-04T09:44:00.740 回答