绘制一个单精灵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,它可用于将图像转换为碰撞形状。
+1。但加载纹理到像素图不会为我工作,因为我加载的图像是4倍小,并且不会reatin我给一个精灵的旋转。 我会检查出ScreenUtils方法,虽然 – TheMorfeus
听起来像你在做一个假设。像素完美意味着:像素完美。你在渲染精灵的时候做的任何变换,当你不渲染它时(或者更多),你也可以做。 – Xoppa