0

我正在使用 libgdx 开发一个小游戏。这是一个 2D 自上而下的游戏,上面有一些大地图和许多对象。所以我只想在我的视锥中渲染东西。我看过camera.frustum.***inFrustum(Paramter... p). 但是我使用的是scene2d,并且我在中设置了相机Stage,将SpriteBatchs投影矩阵设置为,camera.combined并且我Actor的s在覆盖的draw(SpriteBatch batch)方法中绘制了它们自己。我如何访问camera那里的视锥体?有没有办法从 spritebatch 中得到它?还是有另一种方法来实现视锥体剔除?

4

1 回答 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 回答