d3dfont.h
上传用户:sycq158
上传日期:2008-10-22
资源大小:15361k
文件大小:3k
源码类别:

游戏

开发平台:

Visual C++

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