【Visual c++】游戏开发四十九浅墨举教程十七三维天空的实现









//=============================================================================//名称:SkyBoxClass。h//des:一个封装了三维天空盒系统的类的头文件//2013年3月24日创建,浅墨//=============================================================================# pragma>//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//Desc:构造函数//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SkyBoxClass:: SkyBoxClass (LPDIRECT3DDEVICE9 pDevice){//给各个参数赋初值m_pVertexBuffer=零;m_pd3dDevice=pDevice;for (int i=0;i<5;我+ +)m_pTexture[我]=零;m_Length f=0.0;}




//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//名称:SkyBoxClass: InitSkyBox ()//Desc:天空盒初始化函数,顶点缓冲区的赋值//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BOOL SkyBoxClass:: InitSkyBox(浮动长度){m_Length=长度;//1。创建。创建顶点缓存m_pd3dDevice→CreateVertexBuffer (20 * sizeof (SKYBOXVERTEX), 0, D3DFVF_SKYBOX, D3DPOOL_MANAGED,, m_pVertexBuffer, 0);//用一个结构体把顶点数据先准备好SKYBOXVERTEX顶点[]={//前面的四个顶点{-m_Length/2, 0.0 f, m_Length/2, 0.0度、1.0度,},{-m_Length/2, m_Length/2, m_Length/2, 0.0 f, 0.0 f,}, {m_Length/2, 0.0 f, m_Length/2, 1.0度、1.0度,},{m_Length/2, m_Length/2, m_Length/2, 1.0 f, 0.0 f,},//背面的四个顶点{m_Length/2, 0.0 f, -m_Length/2, 0.0度、1.0度,},{m_Length/2, m_Length/2, -m_Length/2, 0.0 f, 0.0 f,}, {-m_Length/2, 0.0 f, -m_Length/2, 1.0度、1.0度,},{-m_Length/2, m_Length/2, -m_Length/2, 1.0 f, 0.0 f,},//左面的四个顶点{-m_Length/2, 0.0 f, -m_Length/2, 0.0度、1.0度,},{-m_Length/2, m_Length/2, -m_Length/2, 0.0 f, 0.0 f,}, {-m_Length/2, 0.0 f, m_Length/2, 1.0度、1.0度,},{-m_Length/2, m_Length/2, m_Length/2, 1.0 f, 0.0 f,},//右面的四个顶点{m_Length/2, 0.0 f, m_Length/2, 0.0度、1.0度,},{m_Length/2, m_Length/2, m_Length/2, 0.0 f, 0.0 f,}, {m_Length/2, 0.0 f, -m_Length/2, 1.0度、1.0度,},{m_Length/2, m_Length/2, -m_Length/2, 1.0 f, 0.0 f,},//上面的四个顶点{m_Length/2, m_Length/2, -m_Length/2, 1.0 f, 0.0 f,}, {m_Length/2, m_Length/2, m_Length/2, 1.0 f, 1.0 f,}, {-m_Length/2, m_Length/2, -m_Length/2, 0.0 f, 0.0 f,}, {-m_Length/2, m_Length/2, m_Length/2, 0.0 f, 1.0 f,},};//准备填充顶点数据void * pVertices;//2。加锁m_pVertexBuffer→锁(0,0,(void * *), pVertices, 0);//3。访问。把结构体中的数据直接拷到顶点缓冲区中memcpy (pVertices,顶点,sizeof(顶点));//4。解锁m_pVertexBuffer→解锁();返回TRUE;}




//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//名称:SkyBoxClass: LoadSkyTextureFromFile ()//Desc:天空盒纹理加载函数//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BOOL SkyBoxClass:: LoadSkyTextureFromFile (wchar_t * pFrontTextureFile, wchar_t * pBackTextureFile, wchar_t * pLeftTextureFile, wchar_t * pRightTextureFile, wchar_t * pTopTextureFile){//从文件加载五张纹理D3DXCreateTextureFromFile (m_pd3dDevice、pFrontTextureFile, m_pTexture [0]);//前面D3DXCreateTextureFromFile (m_pd3dDevice、pBackTextureFile, m_pTexture [1]);//后面D3DXCreateTextureFromFile (m_pd3dDevice、pLeftTextureFile, m_pTexture [2]);//左面D3DXCreateTextureFromFile (m_pd3dDevice、pRightTextureFile, m_pTexture [3]);//右面D3DXCreateTextureFromFile (m_pd3dDevice、pTopTextureFile, m_pTexture [4]);//上面返回TRUE;}

【Visual c++】游戏开发四十九浅墨举教程十七三维天空的实现