Wildvine Engine
Referencia Doxygen del codigo propio de Wildvine Engine.
Cargando...
Buscando...
Nada coincide
Device.cpp
Ir a la documentación de este archivo.
1
6#include "Device.h"
7void
11
12HRESULT
13Device::CreateRenderTargetView(ID3D11Resource* pResource,
14 const D3D11_RENDER_TARGET_VIEW_DESC* pDesc,
15 ID3D11RenderTargetView** ppRTView) {
16 // Validar parametros de entrada
17 if (!pResource) {
18 ERROR("Device", "CreateRenderTargetView", "pResource is nullptr");
19 return E_INVALIDARG;
20 }
21 if (!ppRTView) {
22 ERROR("Device", "CreateRenderTargetView", "ppRTView is nullptr");
23 return E_POINTER;
24 }
25
26 // Crear el Render Target View
27 HRESULT hr = m_device->CreateRenderTargetView(pResource, pDesc, ppRTView);
28
29 if (SUCCEEDED(hr)) {
30 MESSAGE("Device", "CreateRenderTargetView",
31 "Render Target View created successfully!");
32 }
33 else {
34 ERROR("Device", "CreateRenderTargetView",
35 ("Failed to create Render Target View. HRESULT: " + std::to_string(hr)).c_str());
36 }
37
38 return hr;
39}
40
41HRESULT
42Device::CreateTexture2D(const D3D11_TEXTURE2D_DESC* pDesc,
43 const D3D11_SUBRESOURCE_DATA* pInitialData,
44 ID3D11Texture2D** ppTexture2D) {
45 // Validar parametros de entrada
46 if (!pDesc) {
47 ERROR("Device", "CreateTexture2D", "pDesc is nullptr");
48 return E_INVALIDARG;
49 }
50 if (!ppTexture2D) {
51 ERROR("Device", "CreateTexture2D", "ppTexture2D is nullptr");
52 return E_POINTER;
53 }
54
55 // Crear la textura 2D
56 HRESULT hr = m_device->CreateTexture2D(pDesc, pInitialData, ppTexture2D);
57
58 if (SUCCEEDED(hr)) {
59 MESSAGE("Device", "CreateTexture2D",
60 "Texture2D created successfully!");
61 }
62 else {
63 ERROR("Device", "CreateTexture2D",
64 ("Failed to create Texture2D. HRESULT: " + std::to_string(hr)).c_str());
65 }
66
67 return hr;
68}
69
70HRESULT
71Device::CreateDepthStencilView(ID3D11Resource* pResource,
72 const D3D11_DEPTH_STENCIL_VIEW_DESC* pDesc,
73 ID3D11DepthStencilView** ppDepthStencilView) {
74 // Validar parametros de entrada
75 if (!pResource) {
76 ERROR("Device", "CreateDepthStencilView", "pResource is nullptr");
77 return E_INVALIDARG;
78 }
79 if (!ppDepthStencilView) {
80 ERROR("Device", "CreateDepthStencilView", "ppDepthStencilView is nullptr");
81 return E_POINTER;
82 }
83
84 // Crear el Depth Stencil View
85 HRESULT hr = m_device->CreateDepthStencilView(pResource, pDesc, ppDepthStencilView);
86
87 if (SUCCEEDED(hr)) {
88 MESSAGE("Device", "CreateDepthStencilView",
89 "Depth Stencil View created successfully!");
90 }
91 else {
92 ERROR("Device", "CreateDepthStencilView",
93 ("Failed to create Depth Stencil View. HRESULT: " + std::to_string(hr)).c_str());
94 }
95
96 return hr;
97}
98
99HRESULT
100Device::CreateVertexShader(const void* pShaderBytecode,
101 unsigned int BytecodeLength,
102 ID3D11ClassLinkage* pClassLinkage,
103 ID3D11VertexShader** ppVertexShader) {
104 // Validar parametros de entrada
105 if (!pShaderBytecode) {
106 ERROR("Device", "CreateVertexShader", "pShaderBytecode is nullptr");
107 return E_INVALIDARG;
108 }
109 if (!ppVertexShader) {
110 ERROR("Device", "CreateVertexShader", "ppVertexShader is nullptr");
111 return E_POINTER;
112 }
113
114 // Crear el Vertex Shader
115 HRESULT hr = m_device->CreateVertexShader(pShaderBytecode,
116 BytecodeLength,
117 pClassLinkage,
118 ppVertexShader);
119
120 if (SUCCEEDED(hr)) {
121 MESSAGE("Device", "CreateVertexShader",
122 "Vertex Shader created successfully!");
123 }
124 else {
125 ERROR("Device", "CreateVertexShader",
126 ("Failed to create Vertex Shader. HRESULT: " + std::to_string(hr)).c_str());
127 }
128
129 return hr;
130}
131
132HRESULT
133Device::CreateInputLayout(const D3D11_INPUT_ELEMENT_DESC* pInputElementDescs,
134 unsigned int NumElements,
135 const void* pShaderBytecodeWithInputSignature,
136 unsigned int BytecodeLength,
137 ID3D11InputLayout** ppInputLayout) {
138 // Validar parametros de entrada
139 if (!pInputElementDescs) {
140 ERROR("Device", "CreateInputLayout", "pInputElementDescs is nullptr");
141 return E_INVALIDARG;
142 }
143 if (!ppInputLayout) {
144 ERROR("Device", "CreateInputLayout", "ppInputLayout is nullptr");
145 return E_POINTER;
146 }
147
148 // Crear el Input Layout
149 HRESULT hr = m_device->CreateInputLayout(pInputElementDescs,
150 NumElements,
151 pShaderBytecodeWithInputSignature,
152 BytecodeLength,
153 ppInputLayout);
154
155 if (SUCCEEDED(hr)) {
156 MESSAGE("Device", "CreateInputLayout",
157 "Input Layout created successfully!");
158 }
159 else {
160 ERROR("Device", "CreateInputLayout",
161 ("Failed to create Input Layout. HRESULT: " + std::to_string(hr)).c_str());
162 }
163
164 return hr;
165}
166
167HRESULT
168Device::CreatePixelShader(const void* pShaderBytecode,
169 unsigned int BytecodeLength,
170 ID3D11ClassLinkage* pClassLinkage,
171 ID3D11PixelShader** ppPixelShader) {
172 // Validar parametros de entrada
173 if (!pShaderBytecode) {
174 ERROR("Device", "CreatePixelShader", "pShaderBytecode is nullptr");
175 return E_INVALIDARG;
176 }
177 if (!ppPixelShader) {
178 ERROR("Device", "CreatePixelShader", "ppPixelShader is nullptr");
179 return E_POINTER;
180 }
181
182 // Crear el Pixel Shader
183 HRESULT hr = m_device->CreatePixelShader(pShaderBytecode,
184 BytecodeLength,
185 pClassLinkage,
186 ppPixelShader);
187
188 if (SUCCEEDED(hr)) {
189 MESSAGE("Device", "CreatePixelShader",
190 "Pixel Shader created successfully!");
191 }
192 else {
193 ERROR("Device", "CreatePixelShader",
194 ("Failed to create Pixel Shader. HRESULT: " + std::to_string(hr)).c_str());
195 }
196
197 return hr;
198}
199
200HRESULT
201Device::CreateSamplerState(const D3D11_SAMPLER_DESC* pSamplerDesc,
202 ID3D11SamplerState** ppSamplerState) {
203 // Validar parametros de entrada
204 if (!pSamplerDesc) {
205 ERROR("Device", "CreateSamplerState", "pSamplerDesc is nullptr");
206 return E_INVALIDARG;
207 }
208 if (!ppSamplerState) {
209 ERROR("Device", "CreateSamplerState", "ppSamplerState is nullptr");
210 return E_POINTER;
211 }
212
213 // Crear el Sampler State
214 HRESULT hr = m_device->CreateSamplerState(pSamplerDesc, ppSamplerState);
215
216 if (SUCCEEDED(hr)) {
217 MESSAGE("Device", "CreateSamplerState",
218 "Sampler State created successfully!");
219 }
220 else {
221 ERROR("Device", "CreateSamplerState",
222 ("Failed to create Sampler State. HRESULT: " + std::to_string(hr)).c_str());
223 }
224
225 return hr;
226}
227
228HRESULT
229Device::CreateBuffer(const D3D11_BUFFER_DESC* pDesc,
230 const D3D11_SUBRESOURCE_DATA* pInitialData,
231 ID3D11Buffer** ppBuffer) {
232 // Validar parametros de entrada
233 if (!pDesc) {
234 ERROR("Device", "CreateBuffer", "pDesc is nullptr");
235 return E_INVALIDARG;
236 }
237 if (!ppBuffer) {
238 ERROR("Device", "CreateBuffer", "ppBuffer is nullptr");
239 return E_POINTER;
240 }
241
242 // Crear el Buffer
243 HRESULT hr = m_device->CreateBuffer(pDesc, pInitialData, ppBuffer);
244
245 if (SUCCEEDED(hr)) {
246 MESSAGE("Device", "CreateBuffer",
247 "Buffer created successfully!");
248 }
249 else {
250 ERROR("Device", "CreateBuffer",
251 ("Failed to create Buffer. HRESULT: " + std::to_string(hr)).c_str());
252
253 }
254 return hr;
255}
256
Declara la API de Device dentro del subsistema Core.
#define SAFE_RELEASE(x)
#define MESSAGE(classObj, method, state)
#define ERROR(classObj, method, errorMSG)
HRESULT CreateBuffer(const D3D11_BUFFER_DESC *pDesc, const D3D11_SUBRESOURCE_DATA *pInitialData, ID3D11Buffer **ppBuffer)
Crea un Buffer genérico (vertex, index, constant, etc.).
Definition Device.cpp:229
HRESULT CreateInputLayout(const D3D11_INPUT_ELEMENT_DESC *pInputElementDescs, unsigned int NumElements, const void *pShaderBytecodeWithInputSignature, unsigned int BytecodeLength, ID3D11InputLayout **ppInputLayout)
Crea un Input Layout.
Definition Device.cpp:133
HRESULT CreateTexture2D(const D3D11_TEXTURE2D_DESC *pDesc, const D3D11_SUBRESOURCE_DATA *pInitialData, ID3D11Texture2D **ppTexture2D)
Crea una textura 2D.
Definition Device.cpp:42
HRESULT CreateRenderTargetView(ID3D11Resource *pResource, const D3D11_RENDER_TARGET_VIEW_DESC *pDesc, ID3D11RenderTargetView **ppRTView)
Crea una Render Target View.
Definition Device.cpp:13
ID3D11Device * m_device
Puntero al dispositivo Direct3D 11.
Definition Device.h:146
HRESULT CreateDepthStencilView(ID3D11Resource *pResource, const D3D11_DEPTH_STENCIL_VIEW_DESC *pDesc, ID3D11DepthStencilView **ppDepthStencilView)
Crea una Depth Stencil View.
Definition Device.cpp:71
HRESULT CreateVertexShader(const void *pShaderBytecode, unsigned int BytecodeLength, ID3D11ClassLinkage *pClassLinkage, ID3D11VertexShader **ppVertexShader)
Crea un Vertex Shader.
Definition Device.cpp:100
HRESULT CreatePixelShader(const void *pShaderBytecode, unsigned int BytecodeLength, ID3D11ClassLinkage *pClassLinkage, ID3D11PixelShader **ppPixelShader)
Crea un Pixel Shader.
Definition Device.cpp:168
HRESULT CreateSamplerState(const D3D11_SAMPLER_DESC *pSamplerDesc, ID3D11SamplerState **ppSamplerState)
Crea un Sampler State.
Definition Device.cpp:201
void destroy()
Definition Device.cpp:8