#ifndef _SPECMAPSHADERCLASS_H_ #define _SPECMAPSHADERCLASS_H_ ////////////// // INCLUDES // ////////////// #include #include #include #include using namespace DirectX; using namespace std; //////////////////////////////////////////////////////////////////////////////// // Class name: spec_map_shader_class //////////////////////////////////////////////////////////////////////////////// class spec_map_shader_class { private: struct matrix_buffer_type { XMMATRIX world; XMMATRIX view; XMMATRIX projection; }; struct light_buffer_type { XMFLOAT4 diffuse_color; XMFLOAT4 specular_color; float specular_power; XMFLOAT3 light_direction; }; struct camera_buffer_type { XMFLOAT3 camera_position; float padding; }; public: spec_map_shader_class(); spec_map_shader_class(const spec_map_shader_class&); ~spec_map_shader_class(); bool initialize(ID3D11Device*, HWND); void shutdown(); bool render(ID3D11DeviceContext*, int, XMMATRIX, XMMATRIX, XMMATRIX, ID3D11ShaderResourceView*, ID3D11ShaderResourceView*, ID3D11ShaderResourceView*, XMFLOAT3, XMFLOAT4, XMFLOAT3, XMFLOAT4, float); private: bool initialize_shader(ID3D11Device*, HWND, WCHAR*, WCHAR*); void shutdown_shader(); void output_shader_error_message(ID3D10Blob*, HWND, WCHAR*); bool set_shader_parameters(ID3D11DeviceContext*, XMMATRIX, XMMATRIX, XMMATRIX, ID3D11ShaderResourceView*, ID3D11ShaderResourceView*, ID3D11ShaderResourceView*, XMFLOAT3, XMFLOAT4, XMFLOAT3, XMFLOAT4, float); void render_shader(ID3D11DeviceContext*, int); private: ID3D11VertexShader* vertex_shader_; ID3D11PixelShader* pixel_shader_; ID3D11InputLayout* layout_; ID3D11Buffer* matrix_buffer_; ID3D11SamplerState* sample_state_; ID3D11Buffer* light_buffer_; ID3D11Buffer* camera_buffer_; }; #endif