我正在尝试在DX11中实现精灵,但我不知道如何进行纹理化。
首先,可能会有多个精灵,每个都使用不同的纹理(图集)。但由于我不知道屏幕上有多少精灵,我无法在我的着色器代码中使用Texture2D[x]
。
所以我查看了使用Texture2DArray
,但后来我必须将D3D11Texture2D
对象本身初始化为纹理数组。在我看来这是一个问题,因为在一瞬间,精灵A,B,C可能在屏幕上,下一刻精灵B,C,D在屏幕上。那么我将不得不创建两个D3D11Texture2D
个对象,它们都包含B和C纹理。在任何情况下,它看起来像数组中的纹理必须具有相同的大小..
那是一场绝对的灾难。那么 - 我有没有关于数组的东西?我能以最有效的方式做到这一点有什么选择?我是否必须设置单个纹理,绘制使用该纹理的所有精灵,然后重复?因为那似乎也很糟糕。
提前致谢!
PS。我知道这可能是过早的优化,但我是DX的新手并且学习编码好/使用该库对我来说很有趣。所以我宁愿花一些时间也不愿写一个糟糕的解决方案。
答案 0 :(得分:0)
当我们绘制精灵时,一个非常常见的优化是合并通常同时出现在屏幕上的精灵纹理。所以你可以在一次Draw Call中绘制它们(你只需要改变你的texcoords)。