// wzshadowvolume.h #ifndef _3DFILEACCESS_WZSHADOWVOLUME_H_ #define _3DFILEACCESS_WZSHADOWVOLUME_H_ #include "wzsilhouette.h" #define SOP_ALLOW_FOR_ALPHAOBJECT (0x00000001) //------------------------------------------------------------------------------ /** @class CWzShadowVolume */ class CWzShadowVolume { public: // »ý¼ºÀÚ/¼Ò¸êÀÚ CWzShadowVolume(); ~CWzShadowVolume(); // »ý¼º BOOL Create( const WzVector& wvLightDir, int iNumMeshGroup, WzMeshGroup* pMeshGroups, const WzVector* pwvTransformedVertices, DWORD dwOption = 0 ); // ÆÄ±« void Destroy(); // ½Ç·ç¿§ ¶óÀμö ¾ò±â int GetNumSilouetteLine() const; // ½Ç·ç¿§ ¶óÀÎ ¸®½ºÆ® ¾ò±â St_SilhouetteLine* GetSilhouetteLineList() const; // °á°ú ¹öÅØ½º¼ö ¾ò±â int GetNumVertexShadowVolume() const; // °á°ú ¹öÆÛ ¾ò±â WzVector* GetVertexShadowVolumeBuffer() const; private: // °á°ú »ý¼º void GenerateResult( const WzVector* pwvTransformedVertices ); private: CWzSilhouette m_silhouette; float m_fMaxZ; int m_iNumResultVertex; int m_iResultBufferSize; WzVector* m_pwvResultBuffer; }; //------------------------------------------------------------------------------ /** */ inline int CWzShadowVolume::GetNumSilouetteLine() const { return m_silhouette.m_iNumSilhouetteLine; } //------------------------------------------------------------------------------ /** */ inline St_SilhouetteLine* CWzShadowVolume::GetSilhouetteLineList() const { return m_silhouette.m_pSilhouetteLineList; } //------------------------------------------------------------------------------ /** */ inline int CWzShadowVolume::GetNumVertexShadowVolume() const { return m_iNumResultVertex; } //------------------------------------------------------------------------------ /** */ inline WzVector* CWzShadowVolume::GetVertexShadowVolumeBuffer() const { return m_pwvResultBuffer; } #endif // _3DFILEACCESS_WZSHADOWVOLUME_H_