当前位置: 首页 > 知识库问答 >
问题:

渲染大背景图像的最佳方法是什么?

巢烨
2023-03-14

libGDX文档解释了如何将纹理绑定到SpriteBatch...

我的选择似乎是要么...

>

  • 将背景放在我用于较小游戏精灵的相同纹理中,或者...

    使用单独的纹理作为背景。

    但是如果我做了#2,那么在每次提交到GPU之前,我必须将SpriteBatch绑定到两个不同的纹理,文档描述这是“相当昂贵的”。

    我不知道最好的办法是什么。我真的需要担心绑定到多个纹理那么多吗?还是有更好的方法我没有考虑过?

    任何建议,谢谢!

  • 共有1个答案

    夹谷烨赫
    2023-03-14

    如果已经很大的纹理不会经常使用,您应该尽量避免将它们打包在相同的纹理(图谱)中,就像所有其他小的和经常使用的纹理一样。

    这是为什么?因为许多设备会强迫您只使用power of two(POT)大小的纹理,而如果您想要将大纹理放在一起,这可能会导致一个相当大的文件,并浪费大量空间。

    此外,如果你有10个级别,每一个不同的背景,你会把所有的背景在一个单一的纹理,那么你没有机会只发送一个单一的背景到你的GPU。在每一个级别中,你必须将包含所有背景的巨大纹理文件发送到GPU,以便只显示其中的一个。这样不仅会浪费空间,还会浪费GPU内存,这就更糟糕了。

    由于这些原因,并且因为你通常只画一次你的背景,你可以忽略单一纹理切换的开销。它不是那么昂贵,如果你每帧只做一次(在背景的情况下),它不会有什么不同。

    所以总的来说:将背景纹理从其余部分分离出来,并使它们成为单独的文件。

     类似资料:
    • 问题内容: 由于某些未知原因,iPad Safari不会显示很长的背景图像。在 我的示例中 ,背景图像为1,000 x 10,000像素。相同的示例适用于任何桌面浏览器,例如Safari,Firefox等。 我知道CSS中的,但不幸的是,它不适用于我的特定情况。 问题答案: Mobile Safari对其在进行二次采样之前将显示的背景图像大小有限制,由于背景的大小,您可能会遇到此问题: 对于具有小

    • 问题内容: 我有一个用Java编写的Web应用程序(Spring,Hibernate / JPA,Struts2),用户可以在其中上传图像并将其存储在文件系统中。我想缩放这些图像,以使它们具有一致的大小,以便在网站上显示。哪些库或内置函数将提供最佳结果?在做出决定时,我将考虑以下标准: 免费/开源(基本) 易于实施 结果质量 性能 可执行文件的大小 问题答案: 看一下Java Image I /

    • 我在样式属性中有一个短代码: 问题是不会呈现短代码。 我发现在函数

    • 问题内容: 我在Rails应用程序中优化了一些缓慢的事务,并且看到了花费大量时间渲染JSON视图: 假设API调用恰好返回了需要返回的数据, 那么在rails中呈现JSON的最快方法是什么? 我们之所以使用Rabl是因为能够轻松共享代码,但是我们并不局限于此。 问题答案: Rabl 用于跨平台的兼容性,默认情况下不使用速度非常快的Yajl库。Rabl的配置文档解释了该解决方案: 如果仍然无法提供足

    • 我想在Android中创建不同分辨率的背景图像。所以我需要ldpi,mdpi,hdpi,xhdpi和xxhdpi的值(以像素为单位)。重要的是图像不会模糊。 我已经阅读了有关多屏幕支持的文档,但dp中的尺寸而不是像素。

    • 我正在尝试根据设备宽度提供响应/自适应图像。 原始图像: 与Srcset: 我面临两个问题: 1)即使在较小的设备上(如iPhone 6s),也会加载宽度为2000px的图像(它应该加载800px图像)。 2)我已经把两个图像(有和没有srcset)放在一起。它们都加载了具有相同维度的图像。然而,与其他版本相比,带有srcset的版本显得较小。因为html/css中没有指定宽度,所以它应该以实际图