我试图在DX11中实现精灵,但我不知道如何对它们进行纹理处理。
首先,可能有多个精灵,每个精灵使用不同的纹理(图集)。但由于我不知道屏幕上有多少精灵,我无法在着色器代码中使用Texture2D[x]
。
因此,我考虑使用Texture2DArray
,但随后必须将D3D11Texture2D
对象本身初始化为纹理数组。在我看来,这似乎是一个问题,因为一会儿,精灵a、B、C可能在屏幕上,下一刻精灵B、C、D就在屏幕上。因此,我必须创建两个D3D11Texture2D
对象,它们都包含B和C纹理。在任何情况下,数组中的纹理看起来都必须具有相同的大小。。
这绝对是一场灾难。那么,数组中有我遗漏的东西吗?我有什么选择可以最有效地做到这一点?我必须设置一个纹理,绘制所有使用该纹理的精灵,然后重复吗?因为这看起来也很糟糕。
提前感谢!
PS。我知道这可能是过早的优化,但我是DX的新手,学习良好的代码/使用库对我来说很有趣。所以我宁愿花一些时间也不愿写一个糟糕的解决方案。
当我们绘制精灵时,一个非常常见的优化是合并通常同时出现在屏幕上的精灵纹理。因此,您可以在一次绘图调用中全部绘制它们(您只需更改texcords)。