如果你创建一个新的空纹理,例如与
的IDirect3DDevice9 :: CreateTexture 要么 D3DXCreateTexture
是否可以保证用零填充 - 正如我在测试中看到的那样? 有没有人有关于微软的声明的链接?我找不到任何东西。
答案 0 :(得分:2)
不,没有明确的保证(我见过)。实际上,我已经看到了相反的一些相反的行为:来自先前(解除分配的)纹理的数据和看似随机的数据出现。
但是,纹理之间的行为会有很大差异,具体取决于格式中纹理的分配位置。如果CPU需要,在系统内存或某些共享池中分配可能会导致数据被清零。通常,在视频内存中分配时,不会发生这种情况。 IDirect3DDevice9::CreateTexture
和D3DXCreateTexture
之间也可能存在差异; D3DX通常会进行更多初始化或为此提供选项。
如果您看到纹理显示为零填充,则可能是由于调试版本或新系统。运行一些其他图形应用程序,然后尝试运行发布版本(确保您的系统未设置为D3D调试模式)。
答案 1 :(得分:1)
如果你看一下DXGI API和DX10 + DDI,驱动程序有很多机会通过DXGI / D3D零填充请求的内存。据说没有API保证内存被填零,我不会依赖它。