📄 scenestate.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 + -