我目前正在开发一款游戏,需要与物体进行像素完美碰撞。然而,我遇到的唯一障碍是实际获得该物体的掩模。我考虑过将对象的 Sprite (已正确缩放和转换)渲染到 FrameBuffer,然后将其转换为像素图,但我没有成功(尝试了很多方法,包括 this )
所以,我的问题是:有没有办法将单个 Sprite 渲染到 LibGDX 中的像素图?
最佳答案
听起来就像把马放在车后面。 Sprite 是纹理的一个区域,而纹理又是从文件(也称为像素图)加载的图像。如果您只想从文件加载图像,那么您可以执行以下操作:new Pixmap(Gdx.files.internal("yourfile.png"));
。您还可以缩放和变换坐标,而无需先渲染到 FBO。
也就是说;获取 FrameBuffer 的 Pixmap 就像 taking a screenshot 一样“简单”而 FBO 是绑定(bind)的,因为它就是这样。
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它可用于将您的图像转换为碰撞形状。
关于java - 将单个 Sprite 绘制到 Pixmap - LibGDX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34164782/