2014-02-13 28 views
1

我试图在DX11中实现精灵,但我不知道如何继续纹理它们。如何有效地纹理多个精灵?

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

所以我看着使用Texture2DArray,但然后我必须初始化D3D11Texture2D对象本身作为一个纹理数组。在我看来,这似乎是一个问题,因为在某个时刻,精灵A,B,C可能在屏幕上,下一个精灵B,C,D在屏幕上。那么我将不得不创建两个D3D11Texture2D对象,它们都包含B和C纹理。无论如何,它看起来像阵列纹理必须是相同的大小..

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

提前致谢!

PS。我知道这可能是过早的优化,但我对DX很陌生,并且学习良好编码/使用库对我来说很有意思。所以我宁愿花一些时间,而不是写一个不好的解决方案。

回答

0

当我们绘制精灵时,一个非常常见的优化就是合并通常在屏幕上同时出现的精灵纹理。所以你可以在一个Draw Call中画出它们(你只需要改变你的texcoords)。

+0

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

相关问题