Files
GP1-DirectX/project/src/Effects/Effect.h
2025-01-13 17:12:23 +01:00

64 lines
1.6 KiB
C++

#pragma once
#include "BaseEffect.h"
#include <array>
enum class CullMode {
None = 0,
Front = 1,
Back = 2
};
class Effect: public BaseEffect {
public:
Effect(ID3D11Device *devicePtr, const std::wstring &filePath);
virtual ~Effect() override;
void SetWorldMatrix(const dae::Matrix &world) const override;
void SetCameraPos(const dae::Vector3 &pos) const override;
void SetMaterial(Material *material) override;
void ToggleNormals() override;
void NextSamplingState() override;
void NextCullMode() override;
private:
void InitSamplers(ID3D11Device* devicePtr);
void InitRasterizer(ID3D11Device* devicePtr);
ID3DX11EffectMatrixVariable *m_MatWorldVariablePtr{};
ID3DX11EffectShaderResourceVariable *m_DiffuseMapVariablePtr{};
ID3DX11EffectShaderResourceVariable *m_NormalMapVariablePtr{};
ID3DX11EffectShaderResourceVariable *m_SpecularMapVariablePtr{};
ID3DX11EffectShaderResourceVariable *m_GlossMapVariablePtr{};
ID3DX11EffectVectorVariable *m_CameraPosVariablePtr{};
ID3DX11EffectVectorVariable *m_LightPosVariablePtr{};
ID3DX11EffectVectorVariable *m_LightColorVariablePtr{};
ID3DX11EffectScalarVariable *m_UseNormalMapVariablePtr{};
ID3DX11EffectSamplerVariable *m_SamplerVariablePtr{};
ID3DX11EffectRasterizerVariable* m_RasterizerVariablePtr{};
TechniqueType m_TechniqueType{TechniqueType::Linear};
std::array<ID3D11SamplerState*, 3> m_SamplerStates{};
std::array<ID3D11RasterizerState*, 3> m_RasterizerStates{};
CullMode m_CullMode{ CullMode::Back };
bool m_UseNormalMap{true};
};