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