【发布时间】:2016-03-13 21:33:16
【问题描述】:
我目前正在开发一款需要与对象进行像素完美碰撞的游戏。然而,我遇到的唯一障碍是实际获得对象的面具。我想过将一个对象的精灵(经过适当缩放和转换)渲染到 FrameBuffer,然后我会将其转换为像素图,但我没有运气(尝试了很多方法,包括 this)
所以,我的问题是:有没有办法在 LibGDX 中将单个精灵渲染到像素图?
【问题讨论】:
标签: java android libgdx collision
我目前正在开发一款需要与对象进行像素完美碰撞的游戏。然而,我遇到的唯一障碍是实际获得对象的面具。我想过将一个对象的精灵(经过适当缩放和转换)渲染到 FrameBuffer,然后我会将其转换为像素图,但我没有运气(尝试了很多方法,包括 this)
所以,我的问题是:有没有办法在 LibGDX 中将单个精灵渲染到像素图?
【问题讨论】:
标签: java android libgdx collision
听起来像是把马放在推车后面。 Sprite 是 Texture 的一个区域,它又是从文件 aka Pixmap 加载的图像。如果您只想从文件中加载图像,那么您可以这样做:new Pixmap(Gdx.files.internal("yourfile.png"));。您还可以缩放和转换坐标,而无需先渲染到 FBO。
这就是说;在绑定 FBO 时,获取 FrameBuffer 的 Pixmap 与 taking a screenshot 一样“简单”,因为正是如此。
fbo.begin();
Gdx.gl.glClear(...);
... //render to the FBO
Pixmap pixmap = ScreenUtils.getFrameBufferPixmap(0, 0, fbo.getWidth(), fbo.getHeight());
fbo.end();
请注意,这将是look like it is up-side-down。
但您可能只对像素数据感兴趣,因此在这种情况下您不妨跳过Pixmap 步骤并使用ScreenUtils.getFrameBufferPixels 方法。
然而,也就是说;使用像素数据进行碰撞检测很可能不是您想要实现的最佳解决方案。相反,我建议您查看其他选项,例如查看this tool,它可用于将您的图像转换为碰撞形状。
【讨论】: