我正在使用 libgdx 开发一个小游戏。这是一款 2d 自上而下的游戏,有一些大 map 和许多物体。所以我只想在我的视锥体中渲染事物。我已经看到了camera.frustum.***inFrustum(Paramter... p)
。但我使用的是 scene2d,并且在 Stage 中设置了相机,将 SpriteBatch 的投影矩阵设置为camera.combined 和我的 >Actor
在重写的 draw(SpriteBatch batch)
方法中绘制自己。我如何访问相机
或那里的视锥体?有没有办法把它从 spritebatch 中取出来?或者还有其他方法来实现视锥体剔除吗?
最佳答案
您不需要自己执行此操作。如果您使用带有摄像机的舞台,它会自动绘制 View 内的 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 内部,您可以获得舞台,在舞台上,您可以获得上面显示的所有内容。
actor.getStage().getCamera().frustum;
关于java - Libgdx 视锥体剔除 actor.draw() 内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21547391/