相对于 opengl 的保存到FBO里面 dx11 里面需要用到 Render To Texture--RTT
渲染到纹理,顾名思义就是把渲染目标从帧缓存变成一个纹理。
这样就可以把一个场景渲染后在进行Post Process,做出现在流行的各种特效。
另外在利用GPU做通用计算的时候程序也是通过RTT和GPU交换数据的。
一般情况下需要用以下方式来创建render target ,target对于的 pbackbuffer 就是对应着屏幕上渲染的部分
HRESULT result;
// CREATE RENDER TARGET VIEW
result = pSwapChain->GetBuffer(NULL, __uuidof(ID3D11Texture2D), reinterpret_cast<void**>(&pBackBufferTex));
if (FAILED(result))
{
return false;
}
D3D11_TEXTURE2D_DESC BBDesc;
ZeroMemory(&BBDesc, sizeof(D3D11_TEXTURE2D_DESC));
pBackBufferTex->GetDesc(&BBDesc);
D3D11_RENDER_TARGET_VIEW_DESC RTVDesc;
ZeroMemory(&RTVDesc, sizeof(D3D11_RENDER_TARGET_VIEW_DESC));
RTVDesc.Format = BBDesc.Format;
RTVDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D;
//RTVDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DMS;
RTVDesc.Texture2D.MipSlice = 0;
result