D3D9下的獲得RenderTarget有2種方法
1. 使用D3DXCreateTexture或者Device->CreateTexture 創(chuàng)建紋理
調(diào)用Device->GetSurfaceLevel(0, &SurfacePtr );獲得Surface指針
將Surface指針使用Device->SetRenderTarget設置上去即可開始繪制
注意:D3DXCreateTexture創(chuàng)建的是2的n次冪的紋理,而Device->CreateTexture 創(chuàng)建的則可以是任意大小的紋理
這種方法創(chuàng)建的Texture與Surface是一一對應的,由D3D底層自動做了Resolve的過程
不能使用MultiSample
2. 使用Device->CreateRenderTarget()創(chuàng)建一個Surface,用Surface直接設置為RenderTarget
可以開啟Lockable選項,但是效率會非常低
可以使用MultiSample
由于沒有Texture的關聯(lián),這種方法繪制速度理論上會快一些
可以使用Device->StretchRect來將Surface直接拷貝到后備緩沖或者另外一個Surface。不過在DX8和某些DX9的驅動上有一定兼容性問題,具體請參考SDK
參考:
Render to Surface
http://www.borgsoft.de/renderToSurface.html
渲染到紋理(Render To Texture, RTT)詳解
http://www.opengpu.org/bbs/viewthread.php?tid=445