我正在使用libgdx开发一个小游戏。这是一款自上而下的2D游戏,上面有一些大地图和许多物体。所以我只想在我的视角中渲染事物。我见过camera.frustum.***inFrustum(Paramter... p)
。但是我使用的是scene2d,我在Stage
中设置了相机,将SpriteBatch
的投影矩阵设置为camera.combined
,我的Actor
s在被覆盖的draw(SpriteBatch batch)
中绘制自己1}}方法。我如何访问那里的camera
或视锥体?有没有办法从spritebatch中获得它?还是有另一种方法来实现fiew frustum剔除?
答案 0 :(得分:1)
您自己不需要这样做。如果您正在使用带有相机的舞台,它会自动绘制视图内的actor。
如果您想从舞台上访问相机,只需从舞台上获取。 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;