我需要在Direct3D 9中渲染一些CPU生成的图像,我不确定将纹理数据放到图形卡上的最佳方法,因为似乎有很多方法。
我的使用路径每帧都有以下几行
我想过几种方法可以做到这一点,但我不确定哪一种方法可以使用。我考虑过对每种方法进行基准测试,但是我无法知道我得到的结果是代表硬件,还是只代表我的硬件。
应该注意的是,与整个纹理的大小相比,我正在更新的区域通常相当小,例如纹理可能是1024 * 1024,我可能想要更新5个左右的64 * 64个区域
答案 0 :(得分:1)
如果你需要更新多个区域,你应该锁定整个纹理并使用D3DLOCK_NO_DIRTY_UPDATE标志,然后在解锁之前为每个区域调用AddDirtyRect。
这当然全部取决于纹理的大小等,对于小纹理,从ram复制整个东西可能更有效。
答案 1 :(得分:-1)
- >这是最快的!
基准将随之而来......