DirectX 渲染到纹理
DirectX Render to Texture
我正在尝试将我的场景渲染为纹理,以便在着色器中使用它以获得一些后期处理效果。我对这种东西不是很有经验,所以我在这里有一些问题。首先:
我在我的OnCreateDevice()方法中有这段代码:
D3D11_TEXTURE2D_DESC textureDesc;
D3D11_RENDER_TARGET_VIEW_DESC renderTargetViewDesc;
D3D11_SHADER_RESOURCE_VIEW_DESC shaderResourceViewDesc;
ZeroMemory(&textureDesc, sizeof(textureDesc));
textureDesc.Width = 800/2;
textureDesc.Height = 600/2;
textureDesc.MipLevels = 1;
textureDesc.ArraySize = 1;
textureDesc.Format = DXGI_FORMAT_R32G32B32A32_FLOAT;
textureDesc.SampleDesc.Count = 1;
textureDesc.Usage = D3D11_USAGE_DEFAULT;
textureDesc.BindFlags = D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE;
textureDesc.CPUAccessFlags = 0;
textureDesc.MiscFlags = 0;
pd3dDevice->CreateTexture2D(&textureDesc, NULL, &renderTargetTextureMap);
renderTargetViewDesc.Format = textureDesc.Format;
renderTargetViewDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D;
renderTargetViewDesc.Texture2D.MipSlice = 0;
pd3dDevice->CreateRenderTargetView(renderTargetTextureMap, &renderTargetViewDesc, &renderTargetViewMap);
shaderResourceViewDesc.Format = textureDesc.Format;
shaderResourceViewDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
shaderResourceViewDesc.Texture2D.MostDetailedMip = 0;
shaderResourceViewDesc.Texture2D.MipLevels = 1;
pd3dDevice->CreateShaderResourceView(renderTargetTextureMap, &shaderResourceViewDesc, &shaderResourceViewMap);
我正在创建一个纹理,一个渲染视图和一个资源视图。但是我该何去何从呢?我是否必须定义另一个缓冲区,或者这毕竟有效吗?
具体说来
所以我想我知道我必须将OMRenderTarget设置为:renderTargetViewMap和depthStencilView。但是我必须在哪里设置它?在每一帧渲染调用中?在渲染场景中的其他对象之前还是之后?我的猜测是,我必须制作一个新的着色器,我为它提供了创建纹理以使用它。
感谢您的任何见解:/
每次要渲染到纹理时都必须设置它,是的(只要您没有切换到另一个渲染目标或后台缓冲区)。将数据渲染到纹理后,设置处理此数据的着色器,并绘制与此纹理对齐的屏幕四边形。
相关文章:
- 在 DirectX 中跨线程传递纹理的数据竞赛
- DirectX:用计算着色器写入纹理
- DirectX 11比例纹理2d
- 在 DirectX 中加载 WIC 后创建纹理
- 通过着色器DirectX 9传递纹理
- NV12 纹理在 DirectX 11.1 中不起作用
- 是否有任何 DirectX 11 (HLSL 5.0) 等效于 DirectX 9 纹理"string function"语法?
- DirectX 11 - 如何创建非常简单的 2D 纹理
- DirectX 11 将多个纹理加载到 Texture2DArray 中
- DirectX透明纹理-使植物看起来很好看
- DirectX 10.1 / C++:如何在 ID3D10Resource* 纹理上渲染精灵上的文本
- 将纹理数组发送到DirectX 11中的着色器
- Directx 11,将多个纹理发送到着色器
- DirectX 渲染到纹理
- 如何将 frontBuffer 数据复制到纹理 DirectX 9
- 使用精灵时变形的纹理(Directx 9)
- DirectX在C++中如何在两个对象上渲染不同的纹理
- directx 11使用PSSetShaderResources更改纹理
- DirectX剪辑空间纹理坐标
- 以编程方式创建纹理DirectX