C++ 如何有效地对多个精灵进行纹理处理?

C++ 如何有效地对多个精灵进行纹理处理?,c++,sprite,directx-11,texturing,C++,Sprite,Directx 11,Texturing,我正在尝试在DX11中实现精灵,但我不知道如何对它们进行纹理处理 首先,可能有多个精灵,每个精灵使用不同的纹理。但因为我不知道屏幕上有多少精灵,所以我不能在着色器代码中使用Texture2D[x] 因此,我研究了使用Texture2DArray,但随后我必须将D3D11Texture2D对象本身初始化为纹理数组。这对我来说似乎是个问题,因为在一瞬间,精灵a,B,C可能会出现在屏幕上,而下一瞬间精灵B,C,D就会出现在屏幕上。然后我必须创建两个D3D11Texture2D对象,都包含B和C纹理。在

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

首先,可能有多个精灵,每个精灵使用不同的纹理。但因为我不知道屏幕上有多少精灵,所以我不能在着色器代码中使用Texture2D[x]

因此,我研究了使用Texture2DArray,但随后我必须将D3D11Texture2D对象本身初始化为纹理数组。这对我来说似乎是个问题,因为在一瞬间,精灵a,B,C可能会出现在屏幕上,而下一瞬间精灵B,C,D就会出现在屏幕上。然后我必须创建两个D3D11Texture2D对象,都包含B和C纹理。在任何情况下,数组中的纹理看起来都必须具有相同的大小

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

提前谢谢


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

当我们绘制精灵时,一个非常常见的优化方法是合并通常同时出现在屏幕上的精灵纹理。因此,你可以在一次抽签电话中全部抽签,你只需更换你的texcoords即可。

是的,我想这就是我要做的。似乎真的没有一个优雅的解决方案。。或者如果有,至少我找不到。谢谢