java - 将单个 Sprite 绘制到 Pixmap - LibGDX

标签 java android libgdx collision

我目前正在开发一款游戏,需要与物体进行像素完美碰撞。然而,我遇到的唯一障碍是实际获得该物体的掩模。我考虑过将对象的 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/

相关文章:

java - Java中的不可重入非阻塞信号量

android - 来自具有特殊字符的 macOS 应用程序的 ADB 命令

android - 在 fragment 内使用具有单个 Activity 、布局抽屉和工具栏的 Android 导航组件

java - 在 dispose() libgdx 中重置变量

java - 为什么这个通用代码可以编译?

java - Apache Geode 在 Java 应用程序内部启动定位器和服务器

java - 为空 json 字段设置默认值

opengl - LibGDX 如何使用多个视口(viewport)/相机?

java - 如何渲染以秒为单位的事物

java swing不打印完整页面