d3dfont.h
上传用户:fengshi120
上传日期:2014-07-17
资源大小:6155k
文件大小:3k
源码类别:

3D图形编程

开发平台:

C/C++

  1. //-----------------------------------------------------------------------------
  2. // File: D3DFont.h
  3. //
  4. // Desc: Texture-based font class
  5. //-----------------------------------------------------------------------------
  6. #ifndef D3DFONT_H
  7. #define D3DFONT_H
  8. #include <tchar.h>
  9. #include <D3D9.h>
  10. // Font creation flags
  11. #define D3DFONT_BOLD        0x0001
  12. #define D3DFONT_ITALIC      0x0002
  13. #define D3DFONT_ZENABLE     0x0004
  14. // Font rendering flags
  15. #define D3DFONT_CENTERED_X  0x0001
  16. #define D3DFONT_CENTERED_Y  0x0002
  17. #define D3DFONT_TWOSIDED    0x0004
  18. #define D3DFONT_FILTERED    0x0008
  19. //-----------------------------------------------------------------------------
  20. // Name: class CD3DFont
  21. // Desc: Texture-based font class for doing text in a 3D scene.
  22. //-----------------------------------------------------------------------------
  23. class CD3DFont
  24. {
  25.     TCHAR   m_strFontName[80];            // Font properties
  26.     DWORD   m_dwFontHeight;
  27.     DWORD   m_dwFontFlags;
  28.     LPDIRECT3DDEVICE9       m_pd3dDevice; // A D3DDevice used for rendering
  29.     LPDIRECT3DTEXTURE9      m_pTexture;   // The d3d texture for this font
  30.     LPDIRECT3DVERTEXBUFFER9 m_pVB;        // VertexBuffer for rendering text
  31.     DWORD   m_dwTexWidth;                 // Texture dimensions
  32.     DWORD   m_dwTexHeight;
  33.     FLOAT   m_fTextScale;
  34.     FLOAT   m_fTexCoords[128-32][4];
  35.     DWORD   m_dwSpacing;                  // Character pixel spacing per side
  36.     // Stateblocks for setting and restoring render states
  37.     LPDIRECT3DSTATEBLOCK9 m_pStateBlockSaved;
  38.     LPDIRECT3DSTATEBLOCK9 m_pStateBlockDrawText;
  39. public:
  40.     // 2D and 3D text drawing functions
  41.     HRESULT DrawText( FLOAT x, FLOAT y, DWORD dwColor, 
  42.                       const TCHAR* strText, DWORD dwFlags=0L );
  43.     HRESULT DrawTextScaled( FLOAT x, FLOAT y, FLOAT z, 
  44.                             FLOAT fXScale, FLOAT fYScale, DWORD dwColor, 
  45.                             const TCHAR* strText, DWORD dwFlags=0L );
  46.     HRESULT Render3DText( const TCHAR* strText, DWORD dwFlags=0L );
  47.     
  48.     // Function to get extent of text
  49.     HRESULT GetTextExtent( const TCHAR* strText, SIZE* pSize );
  50.     // Initializing and destroying device-dependent objects
  51.     HRESULT InitDeviceObjects( LPDIRECT3DDEVICE9 pd3dDevice );
  52.     HRESULT RestoreDeviceObjects();
  53.     HRESULT InvalidateDeviceObjects();
  54.     HRESULT DeleteDeviceObjects();
  55.     // Constructor / destructor
  56.     CD3DFont( const TCHAR* strFontName, DWORD dwHeight, DWORD dwFlags=0L );
  57.     ~CD3DFont();
  58. };
  59. #endif