【问题标题】:How can I efficiently texture multiple sprites?如何有效地纹理多个精灵?
【发布时间】:2014-02-14 15:19:41
【问题描述】:

我正在尝试在 DX11 中实现精灵,但我不知道如何对它们进行纹理处理。

首先,可能有多个精灵,每个精灵使用不同的纹理(图集)。但由于我不知道屏幕上有多少精灵,我不能在我的着色器代码中使用Texture2D[x]

所以我查看了使用Texture2DArray,但随后我必须将D3D11Texture2D 对象本身初始化为纹理数组。这在我看来是个问题,因为在某一时刻,精灵 A、B、C 可能会出现在屏幕上,而下一时刻精灵 B、C、D 会出现在屏幕上。因此,我必须创建两个 D3D11Texture2D 对象,它们都包含 B 和 C 纹理。无论如何,看起来数组中的纹理必须具有相同的大小..

这绝对是一场灾难。那么 - 我对数组有什么遗漏吗?我有什么选择以最有效的方式做到这一点?我是否必须设置一个纹理,绘制所有使用该纹理的精灵,然后重复?因为那看起来也很糟糕。

提前致谢!

PS。我知道这可能是过早的优化,但我是 DX 新手,学习如何编写好代码/很好地使用库对我来说很有趣。所以我宁愿花一些时间也不愿写一个糟糕的解决方案。

【问题讨论】:

    标签: c++ sprite directx-11 texturing


    【解决方案1】:

    当我们绘制精灵时,一个非常常见的优化是合并通常同时出现在屏幕上的精灵的纹理。因此,您可以在一个 Draw Call 中将它们全部绘制出来(您只需要更改您的 texcoords)。

    【讨论】:

    • 是的,我想这就是我要去做的。似乎真的没有一个优雅的解决方案。或者至少我没有找到它,如果有的话。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多