#ifndef __CSHADERSCENE_H__ #define __CSHADERSCENE_H__ #include "ShaderConstants.h" // Shader »ó¼ö define header #include #include #include /* *************************************************** Vertex Shader, Pixel Shader, Shader Base Class. *************************************************** */ enum ENABLEFLAG { ZBUFFER, ZWRITE, ALPHABLEND, CULLMODE, ENABLEFLAGNUM, }; class CVertexShader { protected: void CreateVertexShader(char* fileName, DWORD* vertexShaderDeclaration); void CreateVertexShaderFromBuffer(char *string,DWORD* vertexShaderDeclaration); DWORD m_dwVertexShader; public: CVertexShader() : m_dwVertexShader(0){} virtual ~CVertexShader(); virtual void Apply() = 0; virtual int GetVertexStride() const = 0; virtual DWORD GetVertexFormat() const = 0; virtual void SetupVertexShaderConstants() = 0; }; class CPixelShader { protected: void CreatePixelShaderFromFile(char* fileName); void CreatePixelShaderFromBuffer(char *shaderStr); DWORD m_dwPixelShader; public: CPixelShader() : m_dwPixelShader(0){} virtual ~CPixelShader(); virtual void Apply() = 0; virtual void SetupPixelShaderConstants() = 0; }; class CShaderScene { // Shader ÇÑ ´ÜÀ§ÀÇ Base Class protected: char m_strName[256]; LPDIRECT3DDEVICE8 m_pDevice; DWORD m_dwSrcBlend; DWORD m_dwDestBlend; DWORD m_dwCullFace; bool m_bEnable[ENABLEFLAGNUM]; DWORD m_dwOldSrcBlend; DWORD m_dwOldDestBlend; DWORD m_dwOldCullFace; bool m_bOldEnable[ENABLEFLAGNUM]; bool m_bGetState; bool m_bSetState; D3DXVECTOR4 m_vecLightDir; D3DXVECTOR4 m_vecLightPos; public: virtual void Apply() = 0; virtual void UnApply() = 0; CShaderScene(); virtual ~CShaderScene(); void SetState(int iFlag,bool bEnable,DWORD dwValue1 = 0x00000000,DWORD dwValue2 = 0x00000000); void GetState(); void ApplyState(); void ApplyOldState(); char * GetShaderName() { return m_strName;} static HRESULT PreprocessAndAssembleShaderFromBuffer( // Ascii·Î µÈ Shader¸¦ BinÀ¸·Î ÄÄÆÄÀÏ LPCVOID pSrcData, UINT SrcDataLen, LPD3DXBUFFER* ppConstants, LPD3DXBUFFER* ppCode); static HRESULT PreprocessAndAssembleShaderFromFile2( // ÆÄÀÏ¿¡¼­ Shader¸¦ BinÀ¸·Î ÄÄÆÄÀÏ LPCSTR szFile, LPD3DXBUFFER* ppConstants, LPD3DXBUFFER* ppCode); void Create(char *strShader); void SetLightDirection(D3DXVECTOR3 vecDir); void SetLightPos(D3DXVECTOR3 vecPos); }; #endif