2024-04-09 15:15:11 -03:00
|
|
|
#ifndef XNA_PLATFORM_SHADER_DX_HPP
|
|
|
|
#define XNA_PLATFORM_SHADER_DX_HPP
|
|
|
|
|
|
|
|
#include "../graphics/shader.hpp"
|
2024-04-25 14:51:33 -03:00
|
|
|
#include "../graphics/gresource.hpp"
|
2024-04-09 15:15:11 -03:00
|
|
|
#include "dxheaders.hpp"
|
|
|
|
|
|
|
|
namespace xna {
|
2024-04-25 14:51:33 -03:00
|
|
|
class Shader : public IShader, public GraphicsResource {
|
2024-04-09 15:15:11 -03:00
|
|
|
public:
|
2024-04-25 14:51:33 -03:00
|
|
|
Shader(GraphicsDevice* device) : GraphicsResource(device){}
|
2024-04-09 15:15:11 -03:00
|
|
|
|
|
|
|
virtual ~Shader() override {}
|
|
|
|
|
2024-04-25 14:51:33 -03:00
|
|
|
virtual bool Initialize(DataBuffer& buffer, xna_error_nullarg) override {}
|
2024-04-09 15:15:11 -03:00
|
|
|
|
2024-04-12 15:21:00 -03:00
|
|
|
static HRESULT CompileFromFile(_In_ LPCWSTR srcFile, _In_ LPCSTR entryPoint, _In_ LPCSTR profile, _Outptr_ ID3DBlob** blob);
|
2024-04-09 15:15:11 -03:00
|
|
|
};
|
|
|
|
|
|
|
|
class VertexShader : public Shader {
|
|
|
|
public:
|
2024-04-25 14:51:33 -03:00
|
|
|
VertexShader(GraphicsDevice* device) : Shader(device){}
|
2024-04-09 15:15:11 -03:00
|
|
|
|
|
|
|
virtual ~VertexShader() override {
|
|
|
|
if (_vertexShader) {
|
|
|
|
_vertexShader->Release();
|
|
|
|
_vertexShader = nullptr;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-04-25 14:51:33 -03:00
|
|
|
virtual bool Initialize(DataBuffer& buffer, xna_error_nullarg) override;
|
2024-04-09 15:15:11 -03:00
|
|
|
|
|
|
|
public:
|
|
|
|
ID3D11VertexShader* _vertexShader = nullptr;
|
|
|
|
};
|
|
|
|
|
|
|
|
class PixelShader : public Shader {
|
|
|
|
public:
|
2024-04-25 14:51:33 -03:00
|
|
|
PixelShader(GraphicsDevice* device) : Shader(device) {}
|
2024-04-09 15:15:11 -03:00
|
|
|
|
|
|
|
virtual ~PixelShader() override {
|
|
|
|
if (_pixelShader) {
|
|
|
|
_pixelShader->Release();
|
|
|
|
_pixelShader = nullptr;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-04-25 14:51:33 -03:00
|
|
|
virtual bool Initialize(DataBuffer& buffer, xna_error_nullarg) override;
|
2024-04-09 15:15:11 -03:00
|
|
|
|
|
|
|
public:
|
|
|
|
ID3D11PixelShader* _pixelShader = nullptr;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|