java - Libgdx 视锥体剔除 actor.draw() 内

标签 java camera libgdx culling scene2d

我正在使用 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/

相关文章:

java - TFS 结帐类似于 SVN 结帐

android - android中的光测量

java - 安卓全屏摄像头

java - Libgdx - 纹理未显示在屏幕更改上

java - 断言失败 : (d + h * k > 1. 19209290e-7F),函数 InitVelocityConstraints 文件 ... b2MouseJoint.cpp,第 125 行

java - LibGDX True Type 字体在按钮中的使用

java - java实现自动提醒

java - 实现一个包含 3 个字符串值的链表

java - 组件不会在 SWT 中使用 GridLayout 调整大小

javascript - 如何使用javascript访问移动设备相机?