SpriteBatch 全部绘制
SpriteBatch draw all
我有一个关于 Libgdx SpriteBatch
的问题:
当我调用 SpriteBatch#draw()
时,Libgdx 会处理 Camera
的截锥体还是绘制它,即使它在截锥体之外?
我已经在查看 SpriteBatch
的代码,但我没有找到任何东西,所以我想知道 Libgdx 是否在内部做了一些事情。
或者我是否必须自己实施 frstum 剔除,例如像这样:
if(camera.frustum.boundsInFrustum(250, 32, 0, 100, 100 ,0)) {
tempEnemy.draw (batch);
}
其中 tempEnemy
是一个 Sprite
,(250,32) 是它的中心,(100,100) 是他的一半大小。
如果我没理解错的话,你是在问,Libgdxs SpriteBatch
是否关心 ViewFrustum
并只绘制可见部分,或者它是否只绘制你告诉他绘制的所有内容。
如果那是问题,答案是 SpriteBatch
绘制所有内容,忽略 ViewFrustum
。你必须自己处理,或者使用 Scene2D,它似乎可以做一些 culling.
这是一条评论,但很长,我认为这是最舒服的阅读方式:
在我的情况下,我认为 Tenfour04 是正确的,没有 cullig 更有效,我将尝试描述在我的情况下可能是什么原因:
-> 通过检查 fustrum 可能不会降低效率,但是,通过您需要在
之后执行的操作
-> 1 在我使用观察者模式的情况下,您会看到相机何时移动并通知其当前的 fustrum actor
-> 2 演员必须看,如果她在范围内,必须调用,getX,getw,等等,更多的指令是添加过程
-> 3 如果 actor 在范围内,则添加到 arraylist,它现在具有带有 Renderable 自定义接口的 SpriteBatch,更多处理负载,如果添加或删除 actor,则创建新的 arrayList,由 Array Class,
也许不是最好的实现,还有一些可以改进的地方,使 2d fustrum 不使用 arrayList 等,如果你在游戏中有很多 sprite 但只有少数 sprite i不觉得。
我的简单benchmark我没有,即使fustrum会被用来取消actor的更新,因为如果这样可能会很高效,比如排除很多有动画的actor,但是这些player不动ect.in结论,
我认为一个简单的 2d 游戏对我来说效率不高,我只是想发表评论,如果有人帮助
感谢Springrbua、noone和Tenfour04
注意:
无论如何,我的简单游戏现在没有使用剔除就可以达到60、61 fps,一个简单的设备,非常酷哈哈
我有一个关于 Libgdx SpriteBatch
的问题:
当我调用 SpriteBatch#draw()
时,Libgdx 会处理 Camera
的截锥体还是绘制它,即使它在截锥体之外?
我已经在查看 SpriteBatch
的代码,但我没有找到任何东西,所以我想知道 Libgdx 是否在内部做了一些事情。
或者我是否必须自己实施 frstum 剔除,例如像这样:
if(camera.frustum.boundsInFrustum(250, 32, 0, 100, 100 ,0)) {
tempEnemy.draw (batch);
}
其中 tempEnemy
是一个 Sprite
,(250,32) 是它的中心,(100,100) 是他的一半大小。
如果我没理解错的话,你是在问,Libgdxs SpriteBatch
是否关心 ViewFrustum
并只绘制可见部分,或者它是否只绘制你告诉他绘制的所有内容。
如果那是问题,答案是 SpriteBatch
绘制所有内容,忽略 ViewFrustum
。你必须自己处理,或者使用 Scene2D,它似乎可以做一些 culling.
这是一条评论,但很长,我认为这是最舒服的阅读方式:
在我的情况下,我认为 Tenfour04 是正确的,没有 cullig 更有效,我将尝试描述在我的情况下可能是什么原因:
-> 通过检查 fustrum 可能不会降低效率,但是,通过您需要在
之后执行的操作-> 1 在我使用观察者模式的情况下,您会看到相机何时移动并通知其当前的 fustrum actor
-> 2 演员必须看,如果她在范围内,必须调用,getX,getw,等等,更多的指令是添加过程
-> 3 如果 actor 在范围内,则添加到 arraylist,它现在具有带有 Renderable 自定义接口的 SpriteBatch,更多处理负载,如果添加或删除 actor,则创建新的 arrayList,由 Array Class,
也许不是最好的实现,还有一些可以改进的地方,使 2d fustrum 不使用 arrayList 等,如果你在游戏中有很多 sprite 但只有少数 sprite i不觉得。
我的简单benchmark我没有,即使fustrum会被用来取消actor的更新,因为如果这样可能会很高效,比如排除很多有动画的actor,但是这些player不动ect.in结论,
我认为一个简单的 2d 游戏对我来说效率不高,我只是想发表评论,如果有人帮助
感谢Springrbua、noone和Tenfour04
注意: 无论如何,我的简单游戏现在没有使用剔除就可以达到60、61 fps,一个简单的设备,非常酷哈哈