绘制一个单精灵Pixmap - LibGDX

问题描述:

我目前正在一个游戏中,我需要与对象的像素完美的碰撞。然而,我得到的唯一障碍是实际上得到了物体的掩模。我想过把一个对象的精灵渲染成FrameBuffer,然后我将它转换成一个像素映射,但我没有这样做(尝试了很多方法,包括this绘制一个单精灵Pixmap - LibGDX

So ,我的问题是:是否有一种方法将单个精灵渲染成LibGDX中的像素图?

听起来像把马放在购物车后面。 Sprite是纹理的一个区域,它又是一个从文件(也就是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,它可用于将图像转换为碰撞形状。

+0

+1。但加载纹理到像素图不会为我工作,因为我加载的图像是4倍小,并且不会reatin我给一个精灵的旋转。 我会检查出ScreenUtils方法,虽然 – TheMorfeus

+0

听起来像你在做一个假设。像素完美意味着:像素完美。你在渲染精灵的时候做的任何变换,当你不渲染它时(或者更多),你也可以做。 – Xoppa