zfxBillBoard.h
资源名称:Direct3D.rar [点击查看]
上传用户:junlon
上传日期:2022-01-05
资源大小:39075k
文件大小:2k
源码类别:
DirextX编程
开发平台:
Visual C++
- #ifndef __d3d_ZFXBillBoard_H__
- #define __d3d_ZFXBillBoard_H__
- //#pragma once
- class CZFXCamera;
- typedef struct tagZFXBBDVERTEX{
- float x, y, z; // The position of the vertex.
- D3DCOLOR color; // The color
- FLOAT tu, tv; // The texture coordinates
- }ZFXBBDVERTEX;
- #define D3DFVF_ZFXBBDVERTEX D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1
- class CZFXBillBoard
- {
- public:
- CZFXBillBoard(void);
- ~CZFXBillBoard(void);
- protected:
- D3DXVECTOR3 m_posVec; //原点,定义为矩形下边的中点位置
- float m_width, m_height; //公告板的宽度和高度
- D3DXVECTOR2 m_ortVec; //朝向
- LPDIRECT3DVERTEXBUFFER9 m_pVB;//顶点缓冲
- D3DXMATRIX m_matWorld; //属于公告板的世界坐标系
- public:
- // 创建公告板对象,主要是顶点缓冲
- HRESULT CreateBoard(LPDIRECT3DDEVICE9 pd3dDevice, D3DXVECTOR3& posVec, float width, float height);
- // 更新公告板的朝向,视点移动之后,一定要调用该函数
- void UpdateOrient(CZFXCamera* camera);
- // 渲染公告板
- void OnRender(LPDIRECT3DDEVICE9 pd3dDevice);
- static void preRender(LPDIRECT3DDEVICE9 pd3dDevice);
- static void postRender(LPDIRECT3DDEVICE9 pd3dDevice);
- };
- class CZFXBillBoardMgr
- {
- public:
- CZFXBillBoardMgr();
- ~CZFXBillBoardMgr();
- protected:
- std::list<CZFXBillBoard> m_list;
- IDirect3DTexture9* m_pTexture; //纹理
- public:
- int GetBoardNum();
- // 加载纹理
- HRESULT LoadTextureFromFile(LPDIRECT3DDEVICE9 pd3dDevice, LPCTSTR texFileName);
- // 添加一个公告板实例
- void AddBillBoard(CZFXBillBoard& billBoard);
- // 更新公告板的朝向,视点移动之后,一定要调用该函数
- void UpdateBoardOrient(CZFXCamera* camera);
- // 渲染公告板
- // 在此函数中自动加载了纹理,和调用CZFXBillBoard::preRender()和CZFXBillBoard::preRender()函数
- void OnRender(LPDIRECT3DDEVICE9 pd3dDevice);
- };
- #endif //__d3d_ZFXBillBoard_H__