在 Libgdx 中实现简单运动模糊的意外结果

2024-05-01

在所附的两张图片中,libgdx 的桌面屏幕截图按预期运行。不幸的是,我的 Galaxy Nexus 的屏幕截图与预期不符。我正在尝试创建一个简单的运动模糊或轨迹效果。

Rendering as I expected on my desktop. Libgdx running on my desktop, working as expected

Not rendering as I expected on my Galaxy nexus. Libgdx running on my Galaxy Nexus not working as expected

圆形纹理在渲染期间在 for 循环中绘制,并且通过使用在圆形之前绘制的 RGBA 0, 0, 0, 0.1f 的像素图来实现效果。

screenClearSprite 创建

Pixmap screenClearPixmap = new Pixmap(256, 256, Format.RGBA8888);
screenClearPixmap.setColor(Color.rgba8888(0, 0, 0, 0.1f));
screenClearPixmap.fillRectangle(0, 0, 256, 256);
screenClearTexture = new Texture(screenClearPixmap);
screenClearSprite = new Sprite(screenClearTexture);
screenClearSprite.setSize(screenWidth, screenHeight);
screenClearPixmap.dispose();

Render

batch.begin();
font.draw(batch, "fps:" + Gdx.graphics.getFramesPerSecond(), 0, 20);
screenClearSprite.draw(batch);
for (int i = 0; i < circleBodies.size(); i++) {
    tempPos = circleBodies.get(i).getPosition();
    batch.draw(circleTexture, (tempPos.x * SCALE) + screenWidthHalf
            - circleSizeHalf, (tempPos.y * SCALE) + screenHeightHalf
            - circleSizeHalf);
}
batch.end();

那么,我做错了什么?也许有更好的方法来获得运动的“运动模糊”效果?


这是一种不同的方法,每次都使用纯色而不是 Alpha 来清除屏幕。

这意味着您必须对代码进行一些修改。这样做的好处是,你这样做的方式有一些缺陷:它会模糊一切运动中,而不仅仅是球。除非你小心,否则很快就会产生丑陋的结果/伪影。

  1. 执行与现在相同的操作,但不是将球绘制到批次中,而是将它们绘制到纹理/位图/其他内容上。然后,每个帧在球图像上添加一个 alpha 混合图像,然后在其顶部的当前位置绘制球。然后将该图像添加到您的屏幕上。很像你现在所做的,只不过你吸引了其他东西并保留它。这样您就不必依赖正在绘制的视口,并且可以将所有内容分开。 此方法类似于绘制累积缓冲器.

  2. 您可以跟踪n每个球的最新位置。然后每一帧都用不同的 Alpha 绘制它们。这非常容易实现。如果您有很多球或较大的球,可能会导致多次绘图调用n,但如果不是太多,则不会限制您的 fps 并且可以提供良好的控制。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Libgdx 中实现简单运动模糊的意外结果 的相关文章

随机推荐

  • ./ansi-html 1:0 中的错误模块解析失败:意外字符“#”(1:0)

    我正在学习角度js 当我运行 ngserve open 时出现以下错误 ERROR in ansi html 1 0 Module parse failed Unexpected character 1 0 You may need an
  • 如何在vue中覆盖materializecss sass变量?

    我想改变物化中的变量 变量 scss https github com Dogfalo materialize blob master sass components variables scss e g primary color col
  • 无法启动 UI Automator 查看器

    我无法启动 UI Automator 查看器 任何人都可以帮助我吗 我怎样才能启动它 当我双击 uiautomatorviewer 一段时间时 黑色窗口打开但自动关闭 即使我在 Windows 路径变量中设置了变量 ANDROID HOME
  • 如何使用php从手机号码获取国家代码

    我正在从数据库中的数据库获取手机号码 我有超过 1000 个手机号码 我的数据库如下所示 mobilenumber 971525478965 919844005522 45712345678 我想遍历数据库中的每个数字并找到countryc
  • $lookup 多个级别而不使用 $unwind?

    我有以下收藏 场地集合 id ObjectId 5acdb8f65ea63a27c1facf86 name ASA College Manhattan Campus addedBy ObjectId 5ac8ba3582c2345af70d
  • 为什么仅当项目中使用 lambda 时,javaassist 在加载 Entitymanager 时才会抛出 invalid Constant type: 18

    在发布这个具体问题之前 我阅读了很多 QnA 大部分的javassist 无效常量 18问题已得到解答以升级javassist库 基于这些 QnA 我还将项目中的 lib 升级到了最新版本 它确实有效 但我不明白以下内容 需要有人帮助提供一
  • Robo 3T 错误:网络无法访问

    我正在尝试将 Robo 3T 连接到我的在线数据库 但它似乎不起作用 我可以用它连接到本地数据库 我尝试使用 MongoDB Compass 进行连接 详细信息和身份验证工作正常 我能够连接 但当我在 Robo 3T 中连接相同的细节时 它
  • 我想更改此代码以仅显示“确定”并删除取消按钮

    我想更改此代码以仅显示 确定 并删除取消按钮 Object contestacion5 JOptionPane showInputDialog null 5 Que describe mejor a la Norte a Examen Ti
  • .NET:对象头有什么用?

    在 NET 中 每个对象有 8 个字节的开销 4 个字节是指向对象类型的指针 另外 4 个字节 称为对象头 有何用途 注意 这个问题是在 2010 年提出的 并且是 32 位特定的 开销与位数相关 1 个指针大小用于 对象类型 方法表 1
  • 向元素添加类

    像这样 我有两个选项卡 所以当我单击其中一个选项卡时 它是活动的 逻辑的 现在我试图区分活动选项卡和非活动选项卡 但不是使用 css 属性 但我想向单击的选项卡添加特定的类 如下所示 tab1 addClass active 但是 没有什么
  • 如何避免 C 运行时 (crt*.o) 垃圾

    我有两个C源文件 foo1 c include
  • 条形图中的并排条形

    这是基于这个帖子 https stackoverflow com questions 26913954 make barplot in ggplot2 with summary statistics noredirect 1 comment
  • 如何更改matplotlib中填充线的线宽?

    有没有办法增加 matplotlib 中剖面线的宽度 例如 下面的代码通过指定linewidth仅改变边缘的宽度 我想更改用于填充的线的线宽 import matplotlib pyplot as plt import numpy as n
  • 在 WPF 中展开 TreeView 时显示“请稍候...”消息

    我的 TreeView 中有很多项目 而且项目也非常复杂 我不想使用虚拟化 展开 TreeView 有时需要花费大量时间 因此 是否有任何事件 例如 IsTreeViewExpanding 或类似的事件 我可以在其中显示 正在生成 Tree
  • 替换 lambda 表达式中的参数类型

    我正在尝试将 lambda 表达式中的参数类型从一种类型替换为另一种类型 我在 stackoverflow 上找到了其他答案 即this one https stackoverflow com questions 11159697 repl
  • 修改文本文件而不读入内存

    我试图找出一种修改文本文件 特别是删除特定行 的方法 而无需将文件的大部分读取到内存中或重写整个文件 这里讨论的是大于主内存约 15 50 Gigs 的文件 附 我正在使用Linux 你不会逃避创建一个新文件 所以就硬着头皮去做吧 使用gr
  • 在汇编中显示两位数? [复制]

    这个问题在这里已经有答案了 我对汇编编程完全陌生 在课堂作业的示例中 需要将两个数字相加并显示总和 我发现神秘的是当其是两位数时显示总和 这是我的代码 mov al num1 mov bl num2 add al bl add ax 303
  • 我应该为每个选项卡栏使用单独的 UINavigationController

    根据Apple https developer apple com library ios documentation WindowsViews Conceptual ViewControllerCatalog Chapters Combi
  • Node.js、EventEmitter 为什么使用它

    我有一个问题events EventEmitter在 Node js 中 为什么使用它 示例1和示例2有什么区别 我发现它们是相同的 是吗 什么时候可以实际使用它 let events require events let util req
  • 在 Libgdx 中实现简单运动模糊的意外结果

    在所附的两张图片中 libgdx 的桌面屏幕截图按预期运行 不幸的是 我的 Galaxy Nexus 的屏幕截图与预期不符 我正在尝试创建一个简单的运动模糊或轨迹效果 Rendering as I expected on my deskto