Wildvine Engine
Referencia Doxygen del codigo propio de Wildvine Engine.
Cargando...
Buscando...
Nada coincide
RenderTargetView.cpp
Ir a la documentación de este archivo.
1
6#include "RenderTargetView.h"
7#include "Device.h"
8#include "Texture.h"
9#include "DeviceContext.h"
10#include "DepthStencilView.h"
11
12HRESULT
13RenderTargetView::init(Device& device, Texture& backBuffer, DXGI_FORMAT Format) {
14 if (!device.m_device) {
15 ERROR("RenderTargetView", "init", "Device is nullptr.");
16 return E_POINTER;
17 }
18 if (!backBuffer.m_texture) {
19 ERROR("RenderTargetView", "init", "Texture is nullptr.");
20 return E_POINTER;
21 }
22 if (Format == DXGI_FORMAT_UNKNOWN) {
23 ERROR("RenderTargetView", "init", "Format is DXGI_FORMAT_UNKNOWN.");
24 return E_INVALIDARG;
25 }
26
27 // Config the description for the render target view
28 D3D11_RENDER_TARGET_VIEW_DESC desc;
29 memset(&desc, 0, sizeof(desc));
30 desc.Format = Format;
31 desc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DMS;
32
33 // Create the render target view
34 HRESULT hr = device.m_device->CreateRenderTargetView(backBuffer.m_texture,
35 &desc,
37 if (FAILED(hr)) {
38 ERROR("RenderTargetView", "init",
39 ("Failed to create render target view. HRESULT: " + std::to_string(hr)).c_str());
40 return hr;
41 }
42
43 return S_OK;
44}
45
46HRESULT
48 Texture& inTex,
49 D3D11_RTV_DIMENSION ViewDimension,
50 DXGI_FORMAT Format) {
51 if (!device.m_device) {
52 ERROR("RenderTargetView", "init", "Device is nullptr.");
53 return E_POINTER;
54 }
55 if (!inTex.m_texture) {
56 ERROR("RenderTargetView", "init", "Texture is nullptr.");
57 return E_POINTER;
58 }
59 if (Format == DXGI_FORMAT_UNKNOWN) {
60 ERROR("RenderTargetView", "init", "Format is DXGI_FORMAT_UNKNOWN.");
61 return E_INVALIDARG;
62 }
63
64 // Config the description for the render target view
65 D3D11_RENDER_TARGET_VIEW_DESC desc;
66 memset(&desc, 0, sizeof(desc));
67 desc.Format = Format;
68 desc.ViewDimension = ViewDimension;
69
70 // Create the render target view
71 HRESULT hr = device.m_device->CreateRenderTargetView(inTex.m_texture,
72 &desc,
74
75 if (FAILED(hr)) {
76 ERROR("RenderTargetView", "init",
77 ("Failed to create render target view. HRESULT: " + std::to_string(hr)).c_str());
78 return hr;
79 }
80
81 return S_OK;
82}
83
84void
86 DepthStencilView& depthStencilView,
87 unsigned int numViews,
88 const float ClearColor[4]) {
89 if (!deviceContext.m_deviceContext) {
90 ERROR("RenderTargetView", "render", "DeviceContext is nullptr.");
91 return;
92 }
93 if (!m_renderTargetView) {
94 ERROR("RenderTargetView", "render", "RenderTargetView is nullptr.");
95 return;
96 }
97
98 // Clear the render target view
99 deviceContext.m_deviceContext->ClearRenderTargetView(m_renderTargetView, ClearColor);
100
101 // Config render target view and depth stencil view
102 deviceContext.m_deviceContext->OMSetRenderTargets(numViews,
104 depthStencilView.m_depthStencilView);
105}
106
107void
108RenderTargetView::render(DeviceContext& deviceContext, unsigned int numViews) {
109 if (!deviceContext.m_deviceContext) {
110 ERROR("RenderTargetView", "render", "DeviceContext is nullptr.");
111 return;
112 }
113 if (!m_renderTargetView) {
114 ERROR("RenderTargetView", "render", "RenderTargetView is nullptr.");
115 return;
116 }
117 // Config render target view
118 deviceContext.m_deviceContext->OMSetRenderTargets(numViews,
120 nullptr);
121}
122
126
127
Declara la API de DepthStencilView dentro del subsistema Core.
Declara la API de DeviceContext dentro del subsistema Core.
Declara la API de Device dentro del subsistema Core.
#define SAFE_RELEASE(x)
#define ERROR(classObj, method, errorMSG)
Declara la API de RenderTargetView dentro del subsistema Core.
Declara la API de Texture dentro del subsistema Core.
Encapsula un ID3D11DepthStencilView para usar un recurso de profundidad/esténcil en el pipeline.
ID3D11DepthStencilView * m_depthStencilView
Vista de profundidad/esténcil de Direct3D 11.
ID3D11DeviceContext * m_deviceContext
Puntero al contexto inmediato de Direct3D 11.
Encapsula un ID3D11Device y facilita la creación de recursos gráficos en Direct3D 11.
Definition Device.h:21
ID3D11Device * m_device
Puntero al dispositivo Direct3D 11.
Definition Device.h:146
void destroy()
Libera el recurso ID3D11RenderTargetView.
HRESULT init(Device &device, Texture &backBuffer, DXGI_FORMAT Format)
Inicializa el Render Target View desde el back buffer.
ID3D11RenderTargetView * m_renderTargetView
Recurso COM de Direct3D 11 para la vista de Render Target.
void render(DeviceContext &deviceContext, DepthStencilView &depthStencilView, unsigned int numViews, const float ClearColor[4])
Limpia y asigna el RTV junto con un Depth Stencil View.
Encapsula una textura 2D en Direct3D 11, incluyendo su recurso y vista como Shader Resource.
Definition Texture.h:24
ID3D11Texture2D * m_texture
Recurso base de la textura en GPU.
Definition Texture.h:163