好了,我试图权衡亲的和使用各种不同的纹理压缩技术的反对的。 我花我的时间99.999%的编码使用DirectX的Windows机器2D精灵游戏。
到目前为止,我已经看过质感包装(SpriteSheets)与α-修剪和这似乎是一个体面的方式来获得更多的性能。 现在我开始看它们存储在纹理格式; 目前一切都被保存为* .PNGs。
我听说*的.dds文件是好,DXT5(/ 3/1根据任务)压缩为结构保持在VRAM压缩使用时尤为突出? 也有人说,因为他们已经DirectDraw的表面,他们加载了,太多了更快。
所以,我创建了一个应用程序来测试这一点; 我打电话低于20倍线,释放每次呼叫的质感。
for (int i = 0; i < 20; i++)
{
if( FAILED( D3DXCreateTextureFromFile( g_pd3dDevice, L"Test.dds", &g_pTexture ) ) )
{
return E_FAIL;
}
g_pTexture->Release();
g_pTexture = NULL;
}
现在,如果我尝试这个具有DXT5纹理,它需要5倍的时间比用一个简单的*。PNG加载完成。 我听说,如果不产生的贴图可以走慢,所以我仔细检查了这一点。 然后,我改变,我用生成*的.dds文件的程序,切换到NVIDIA自身的nvcompress.exe,但没有它有任何影响。
编辑:我忘了提的是,本文件(包括*。PNG和*的.dds)都是相同的图像,只是以不同格式保存。 (相同尺寸,阿尔法的金额,应有尽有!)
编辑2:当使用它加载在几乎快2.5倍以下参数,消耗少了很多VRAM!
D3DXCreateTextureFromFileEx( g_pd3dDevice, L"Test.dds", D3DX_DEFAULT_NONPOW2, D3DX_DEFAULT_NONPOW2, D3DX_FROM_FILE, 0, D3DFMT_FROM_FILE, D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_FILTER_NONE, 0, NULL, NULL, &g_pTexture )
不过,我现在失去了我所有的透明度纹理,我已经看过了DXT5纹理和它在Paint.NET和DirectX DDS浏览器看起来不错。 然而,在所有的透明度加载时变为纯黑色。 colorkey的问题?
编辑3:忽略最后一点,我是白痴,在我的“简单的例子”急速我忘了,使阿尔法混合的D3DXSprite->开始()。 卫生署!