zoukankan      html  css  js  c++  java
  • DirectX90 3D 字体

    字体 

    ID3DXFont 接口

    创建一个ID3DXFont接口对象

    HRESULT D3DXCreateFontIndirect(    

        LPDIRECT3DDEVICE9 pDevice, //device to associanted with the font

        CONST LOGFONT *pLogFont,   //D3DXFONT_DESC structrure, describing //the font

        LPD3DXFONT *ppFont    //return the created font

    );

    对要创建的字体进行描述, 必须先填充D3DXFONT_DESC结构。

    函数使用演示

    D3DXFONT_SESC df;

    ZeroMemory (
    &dfm sizeof(D3DFONT_DESC));

    df.Height
    = 25; //in logical unite

    df.Width
    = 12; //in logical units

    df.Weight
    = 500; //boldness, range 0(light)-1000(bold)

    df.MipLevels
    = D3DX_DEFAULT;

    df.Italic
    = false;

    df.CharSet
    = 0;

    df. OutputPrecision
    = 0;

    df.Quality
    = 0;

    df.PitchAndFamily
    = 0;

    strcpy (df.FaceName, “Times New Roman”);
    //font style



    ID3DXFont
    *font = 0;

    D3DXCreateFontIndirect(Device,
    &df, &font);

    绘制文

    一旦获取了ID3DXFont接口的指针, 只需调用方法ID3DXFONT::DrawText即可轻而易用举的完成文本的绘制。

    INT ID3DXFont::DwawText(

    LPCSTR pSprite,

    INT Count,

    LPRECT pRect,

    DWDRD Format,

    D3DCLOR Color

    );

    ·pSprite 指定字符串所属的ID3DXSprite对象接口, 可设为默认值0或NULL,表示在当前窗口中绘制字符串。

    ·pString 指向将要绘制的字符串的指针。

    · Count字符串的字符个数据。若该值为-1, 则认为参数pString指向一个以NULL结尾的字符串。 ID3DXFont::DrawTect方法将自动对字符个数进行统计。

    · pRect 指定字符串在这Rect抒写的矩形区或中的格式化方法, 该是一系列可选标记的某一个或某种组合。

    · Color文本颜色。

    CD3DFont

    创建CD3DFont

    要想创建CD3DFont 类的实例,像普通C++对象那样进行实例化即可。

    CD3DFont (const TCHAR *strFontName, DWORD dwHeight,

    DWORD dwFlags = 0L)

    ·StrFontName 一个以NULL结尾的字符串, 它指定了字体的名称。

    ·dwHeiht 字体的高度。

    ·dwFlags 创建标记, 可选 。 该参数可高 为0或以下标记的组合:

      D3DFONT_BOLD D3DFONT_ITALIC D3DFONT_ZENABLE.

    当我们实例化一个CD3DFont类的对象后, 必须调用如下方法来对字体进行初始化:

    Font = new CD3DFont (“Times New Roman” , 16, 0);

    Font
    -> InitDeViceObject (Device);

    Font
    ->RestoreDeviceObjects();

    绘制文本 

    我们已经创建了一个CD3DFont对象并对其进行了初始化, 现在可以绘制一些文本。可用如下函数实现文本的绘制:

    HRESULT CD3DFont::DrawText(FLOAT x, FLOAT y, DWORD dwColor,

                              Const TCHAR * strText, DWORD dwFlags = 0)

    ·x y 屏幕坐标第中文本绘制起点的x y坐标。

    ·dwColor 文本的颜色。

    ·strText 指向所要绘制文本的指针。

    ·dwFlags 绘制标记, 可选。 可设为0或标记的组合:D3DFONT_CENTERD

              D3DFONT_TWOSIDED  D3DFONT_FILTDRED

    如:Font->DrawText(20, 20. 0xff000000, “Hello Woreld”);

    清理

    Font->InvalideateDeviceObjects();

    Font
    ->DeleteDeviceObjects();

    Delete Font;

    D3DXCreateText函数

    该函数用创建文本的3D网格。

    D3DXCreateText函数的原型为:

    HRESULT D3DXCreateText(

    LPDIRECT3DDEVICE9 pDevice,

        HDC hDC,

        LPCTSTR pText,

        FLOAT Deviation,

        FLOAT Extrusion,

        LPD3DXMESH *ppMesh,

        LPD3DXBUFFER *ppAdjacency,

        LPGLYPHMETRICSFLOAT pGlyphMetrics

    );

    说明:

    ·pDevice 指向与网格相关的设备。

    ·hDC 一个设备环境句柄, 它包含了我们将用来创建网格的字体的相关信息

    ·pText 确定所要用于生成文本的字符串的指针。

    ·Deviation TrurType字体轮廓是最大弦偏差(chordal deviation).该值必须为非负,弦偏差差等于原始字体的一个设计单位。

    ·Extrusion 沿z軕负方向度量的字体深度。

    ·ppMesh 返回所创建的网格。

    ·ppAdjacency 返回所创建的网格的邻接信息(adjacency info)如果不需要为NULL

    pGlyphMetrics 指向LPGLYPHMETRICSFLOAT类型结构数组的指针,该结构包含了字形(glyph)的度量数据。可设为0 忽略。

    《DirectX9.0 3D 游戏开发基础》笔记

    江西理工大学 FangSHi 2010-4-15 

  • 相关阅读:
    C++ Programming with TDD之一:GMOCK框架简介
    Linux Programming之MySQL
    Python之自动单元测试之一(unittest使用实例)
    关于过去的这一个月——面试经历
    谈谈Python中对象拷贝
    C++之Effective STL学习笔记Item21
    C++之Effective STL学习笔记Item7
    C++之Effective STL学习笔记Item20
    C++之Effective STL学习笔记Item14
    Coding Rules
  • 原文地址:https://www.cnblogs.com/fangshenghui/p/1713844.html
Copyright © 2011-2022 走看看