我目前正在制作一款游戏,其中我需要像素与物体完美碰撞。然而,我得到的唯一障碍是实际获得物体的面具。我想过将一个对象的精灵(经过适当缩放和变换)渲染到FrameBuffer,然后我将其转换为像素图,但我没有运气(试过很多方法,包括this)< / p>
所以,我的问题是:有没有办法在LibGDX中将单个精灵渲染到像素图?
答案 0 :(得分:3)
听起来像把马放在推车后面。 Sprite是Texture的一个区域,而该区域又是从文件aka Pixmap加载的图像。如果您只想从文件加载图像,则可以执行:new Pixmap(Gdx.files.internal("yourfile.png"));
。您也可以缩放和变换坐标,而无需先渲染到FBO。
那说;获得FrameBuffer的Pixmap就像#34;简单&#34;当FBO受约束时为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。