Wildvine Engine
Referencia Doxygen del codigo propio de Wildvine Engine.
Cargando...
Buscando...
Nada coincide
ShaderProgram.h
Ir a la documentación de este archivo.
1
6#pragma once
7#include "Prerequisites.h"
8#include "InputLayout.h"
9
10class Device;
11class DeviceContext;
12class LayoutBuilder;
13
22class
24public:
28 ShaderProgram() = default;
29
34 ~ShaderProgram() = default;
35
49 HRESULT
50 init(Device& device, const std::string& fileName, LayoutBuilder layoutBuilder);
51
60 void
62
73 void
74 render(DeviceContext& deviceContext);
75
85 void
86 render(DeviceContext& deviceContext, ShaderType type);
87
94 void
95 destroy();
96
104 HRESULT
106
114 HRESULT
115 CreateShader(Device& device, ShaderType type);
116
125 HRESULT
126 CreateShader(Device& device, ShaderType type, const std::string& fileName);
127
140 HRESULT
141 CompileShaderFromFile(char* szFileName,
142 LPCSTR szEntryPoint,
143 LPCSTR szShaderModel,
144 ID3DBlob** ppBlobOut);
145
146public:
150 ID3D11VertexShader* m_VertexShader = nullptr;
151
155 ID3D11PixelShader* m_PixelShader = nullptr;
156
161
162private:
166 std::string m_shaderFileName;
167
171 ID3DBlob* m_vertexShaderData = nullptr;
172
176 ID3DBlob* m_pixelShaderData = nullptr;
177};
178
179
Declara la API de InputLayout dentro del subsistema Core.
Declara la API de Prerequisites dentro del subsistema Core.
ShaderType
Encapsula un ID3D11Device y facilita la creación de recursos gráficos en Direct3D 11.
Definition Device.h:21
Encapsula un ID3D11InputLayout que describe el formato de los vértices para el pipeline de entrada.
Definition InputLayout.h:22
Encapsula la creación, compilación y uso de Vertex Shader y Pixel Shader en Direct3D 11.
ID3D11VertexShader * m_VertexShader
Vertex Shader compilado y creado en GPU.
HRESULT CreateShader(Device &device, ShaderType type)
Crea un shader (Vertex o Pixel) a partir del archivo establecido en m_shaderFileName.
ID3D11PixelShader * m_PixelShader
Pixel Shader compilado y creado en GPU.
InputLayout m_inputLayout
Input Layout asociado al Vertex Shader.
ID3DBlob * m_vertexShaderData
Bytecode compilado del Vertex Shader.
void render(DeviceContext &deviceContext)
Aplica el Vertex Shader, Pixel Shader e Input Layout al pipeline.
ID3DBlob * m_pixelShaderData
Bytecode compilado del Pixel Shader.
HRESULT CompileShaderFromFile(char *szFileName, LPCSTR szEntryPoint, LPCSTR szShaderModel, ID3DBlob **ppBlobOut)
Compila un shader desde archivo.
void update()
Actualiza parámetros internos de los shaders.
HRESULT init(Device &device, const std::string &fileName, LayoutBuilder layoutBuilder)
Inicializa el programa de shaders desde un archivo HLSL.
std::string m_shaderFileName
Nombre del archivo HLSL asociado a este programa de shaders.
void destroy()
Libera todos los recursos asociados (shaders, blobs e input layout).
~ShaderProgram()=default
Destructor por defecto.
ShaderProgram()=default
Constructor por defecto.
HRESULT CreateInputLayout(Device &device, LayoutBuilder)
Crea un Input Layout asociado al Vertex Shader.