2024-04-09 15:15:11 -03:00
|
|
|
#ifndef XNA_PLATFORM_SHADER_DX_HPP
|
|
|
|
#define XNA_PLATFORM_SHADER_DX_HPP
|
|
|
|
|
|
|
|
#include "../graphics/shader.hpp"
|
|
|
|
#include "dxheaders.hpp"
|
|
|
|
|
|
|
|
namespace xna {
|
|
|
|
class Shader : public IShader {
|
|
|
|
public:
|
2024-04-12 15:21:00 -03:00
|
|
|
Shader() = default;
|
2024-04-09 15:15:11 -03:00
|
|
|
|
|
|
|
virtual ~Shader() override {}
|
|
|
|
|
2024-04-12 15:21:00 -03:00
|
|
|
virtual bool Initialize(GraphicsDevice& device, 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-12 15:21:00 -03:00
|
|
|
VertexShader() = default;
|
2024-04-09 15:15:11 -03:00
|
|
|
|
|
|
|
virtual ~VertexShader() override {
|
|
|
|
if (_vertexShader) {
|
|
|
|
_vertexShader->Release();
|
|
|
|
_vertexShader = nullptr;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-04-12 15:21:00 -03:00
|
|
|
virtual bool Initialize(GraphicsDevice& device, 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-12 15:21:00 -03:00
|
|
|
PixelShader() = default;
|
2024-04-09 15:15:11 -03:00
|
|
|
|
|
|
|
virtual ~PixelShader() override {
|
|
|
|
if (_pixelShader) {
|
|
|
|
_pixelShader->Release();
|
|
|
|
_pixelShader = nullptr;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-04-12 15:21:00 -03:00
|
|
|
virtual bool Initialize(GraphicsDevice& device, DataBuffer& buffer, xna_error_nullarg) override;
|
2024-04-09 15:15:11 -03:00
|
|
|
|
|
|
|
public:
|
|
|
|
ID3D11PixelShader* _pixelShader = nullptr;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|