⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scenestate.h

📁 activate your member account after checking your files. If
💻 H
字号:
//======================================================================================//
// filename: SceneState.h                                                               //
//                                                                                      //
// author:   Pedro V. Sander                                                            //
//           ATI Research, Inc.                                                         //
//           3D Application Research Group                                              //
//           email: psander@ati.com                                                     //
//                                                                                      //
// Description: D3D State settings                                                      //
//                                                                                      //
//======================================================================================//
//   (C) 2003 ATI Research, Inc.  All rights reserved.                                  //
//======================================================================================//

// Parameter codes for state
#define PARAM_MATERIAL_COLOR      0
#define PARAM_MATERIAL_POWER      1
#define PARAM_AMBIENT_COLOR       2
#define PARAM_SPECULAR_ENABLE     3
#define PARAM_TWEENING_ENABLE     4
#define PARAM_FOG_TYPE            5
#define PARAM_FOG_COLOR           6
#define PARAM_FOG_START           7
#define PARAM_FOG_END             8
#define PARAM_FOG_DENSITY         9
#define PARAM_FOG_RANGE           10
#define PARAM_LIGHT_NUM           11
#define PARAM_LIGHT_TYPE          12
#define PARAM_LIGHT_POS_X         13
#define PARAM_LIGHT_POS_Y         14
#define PARAM_LIGHT_POS_Z         15
#define PARAM_LIGHT_DIR_X         16
#define PARAM_LIGHT_DIR_Y         17
#define PARAM_LIGHT_DIR_Z         18
#define PARAM_LIGHT_AMBIENT       19
#define PARAM_LIGHT_DIFFUSE       20
#define PARAM_LIGHT_SPECULAR      21
#define PARAM_LIGHT_RANGE         22
#define PARAM_LIGHT_FALLOFF       23
#define PARAM_LIGHT_ATTENUATION0  24
#define PARAM_LIGHT_ATTENUATION1  25
#define PARAM_LIGHT_ATTENUATION2  26
#define PARAM_LIGHT_THETA         27
#define PARAM_LIGHT_PHI           28
#define PARAM_TEX_TYPE            29
#define PARAM_TEXGEN_TYPE         30
#define NUM_PARAMETERS            31

//-----------------------------------------------------------------------------
// Name: class CVertexFog
// Desc: Fog settings
//-----------------------------------------------------------------------------
struct CVertexFog
{
   int iType;
   D3DCOLORVALUE vColor;
   float fStart;
   float fEnd;
   float fDensity;
   bool bRange;
};

//-----------------------------------------------------------------------------
// Name: class CTexture
// Desc: Texture coordinate generation settings
//-----------------------------------------------------------------------------
struct CTexture
{
   int iTexType;
   int iTexGenType;
};

//-----------------------------------------------------------------------------
// Name: class CSceneState
// Desc: Settings of current state
//-----------------------------------------------------------------------------
class CSceneState
{
public:
   bool m_bInited;

   //three lights
   int m_iLightType[NUM_LIGHTS];
   D3DLIGHT9 m_light[NUM_LIGHTS];

   //fog settings
   CVertexFog m_vfog;

   //texture coordinate settings
   CTexture m_tex;

   //misc settings
   bool m_bSpecular;
   bool m_bTweening;
   D3DCOLORVALUE m_vAmbientColor;
   D3DCOLORVALUE m_vMaterialColor;
   float m_fMaterialPower;

   void ColorPick(HWND hWnd, D3DCOLORVALUE *rgb);

   void InitFromEffects(LPD3DXEFFECT pEffect);
   void WriteToEffects(LPD3DXEFFECT pEffect);
   void InitFromFile(FILE *fp, bool bFull = false, D3DXMATRIXA16 *matWorld = NULL,
                        D3DXMATRIXA16 *matView = NULL, D3DXMATRIXA16 *matProj = NULL, 
                        D3DXMATRIXA16 *matViewTrans = NULL, 
                        D3DXMATRIXA16 *matViewRot = NULL, 
                        CD3DArcBall *ArcBall = NULL, 
                        float *fTimeRot = NULL,
                        char *strMeshFilename = NULL);
   void SaveToFile(FILE *fp, D3DXMATRIXA16 *matWorld,
                        D3DXMATRIXA16 *matView, D3DXMATRIXA16 *matProj, 
                        D3DXMATRIXA16 *matViewTrans, 
                        D3DXMATRIXA16 *matViewRot, 
                        CD3DArcBall *ArcBall, 
                        float *fTimeRot,
                        char *strMeshFilename);
   void Set(LPDIRECT3DDEVICE9 pd3dDevice, LPD3DXEFFECT pEffect);
   void Change(int iParam, int &iParamLight, int fDirection, 
                        bool bChangeFast, HWND hWnd, bool *pbReInitAll);
   int SortLights(int iCurrent);

   CSceneState() {m_bInited = false;}
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -