青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天行健 君子當自強而不息

創建游戲內核(12)【OO改良版】

 

本篇是創建游戲內核(11)【OO改良版】的續篇,關于該內核的細節說明請參閱創建游戲內核(12)


接口:

class FONT
{
public:
    FONT();
    ~FONT();

    ID3DXFont* get_font();
    
void free();

    BOOL create(
const char* face_name, long size, BOOL is_bold, BOOL is_italic);    

    BOOL draw(
const char* text, 
              
long x_pos, long y_pos, long width, long height,
              D3DCOLOR color, DWORD format);    

private:
    ID3DXFont*  m_font;
};

typedef FONT* FONT_PTR;
 

實現:

//-------------------------------------------------------------------
// Constructor, initialize data member.
//-------------------------------------------------------------------
FONT::FONT()
{
    m_font = NULL;
}

//-------------------------------------------------------------------
// Destructor, release font resource.
//-------------------------------------------------------------------
FONT::~FONT()
{
    free();
}

//-------------------------------------------------------------------
// Get pointer to font object.
//-------------------------------------------------------------------
ID3DXFont* FONT::get_font()
{
    
return m_font;
}

//-------------------------------------------------------------------
// Release font resource.
//-------------------------------------------------------------------
void FONT::free()
{
    release_com(m_font);
}

//-------------------------------------------------------------------
// create font object.
//-------------------------------------------------------------------
BOOL FONT::create(const char* face_name, long size, BOOL is_bold, BOOL is_italic)
{
    D3DXFONT_DESC _font_desc;

    
// check condition first
    if(g_d3d_device == NULL || face_name == NULL)
        
return FALSE;
    
    
// clear out the font structure
    ZeroMemory(&_font_desc, sizeof(D3DXFONT_DESC));

    
// set the font property

    strcpy(_font_desc.FaceName, face_name);

    _font_desc.Height = -size;
    _font_desc.Weight = is_bold ? 700 : 0;
    _font_desc.Italic = is_italic;

    
// create the font object
    if(FAILED(D3DXCreateFontIndirect(g_d3d_device, &_font_desc, &m_font)))
        
return FALSE;

    
return TRUE;
}

//-------------------------------------------------------------------
// Draw text.
//-------------------------------------------------------------------
BOOL FONT::draw(const char* text, 
                
long x_pos, long y_pos, long width, long height, 
                D3DCOLOR color, DWORD format)
{
    
if(m_font == NULL)
        
return FALSE;

    
// set draw region's width and height
    if(width  == 0)  width  = 65536;
    
if(height == 0)  height = 65536;

    RECT _rect;

    
// set draw region
    _rect.left   = x_pos;
    _rect.top    = y_pos;
    _rect.right  = x_pos + width;
    _rect.bottom = y_pos + height;

    
// draw text now
    if(FAILED(m_font->DrawText(NULL, text, -1, &_rect, format, color)))
        
return FALSE;

    
return TRUE;
}


測試代碼:

/***********************************************************************************
PURPOSE:
    Test font class.
***********************************************************************************/


#include "core_common.h"
#include "core_framework.h"
#include "core_graphics.h"

class APP : public FRAMEWORK
{
public:
    
//--------------------------------------------------------------------------------
    // Initialize data for game.
    //--------------------------------------------------------------------------------
    BOOL init()
    {   
        
// Create Direct3D and Direct3DDevice object
        if(! create_display(g_hwnd, get_client_width(g_hwnd), get_client_height(g_hwnd), 16, TRUE, FALSE))
            
return FALSE;    

        m_font.create("Segoe Script", 32, FALSE, FALSE);
        
        
return TRUE;
    }

    
//--------------------------------------------------------------------------------
    // Render every game frame.
    //--------------------------------------------------------------------------------
    BOOL frame()
    {
        clear_display_buffer(D3DCOLOR_RGBA(0, 0, 0, 255));

        
if(SUCCEEDED(g_d3d_device->BeginScene()))
        {
            m_font.draw("nothing to say", 
                      0, 0, get_client_width(g_hwnd), get_client_height(g_hwnd),
                      0xFFFFFFFF, DT_CENTER | DT_VCENTER);

            g_d3d_device->EndScene();
        }

        present_display();

        
return TRUE;
    }

    
//--------------------------------------------------------------------------------
    // Release all game resources.
    //--------------------------------------------------------------------------------
    BOOL shutdown()
    {
        release_com(g_d3d_device);
        release_com(g_d3d);

        
return TRUE;
    }

private:
    FONT m_font;
};

//--------------------------------------------------------------------------------
// Main function, routine entry.
//--------------------------------------------------------------------------------
int WINAPI WinMain(HINSTANCE inst, HINSTANCE pre_inst, LPSTR cmd_line, int cmd_show)
{    
    
if(! build_window(inst, "MainClass", "MainWindow", WS_OVERLAPPEDWINDOW, 0, 0, 640, 480))
        
return -1;

    APP app;

    app.run();
    
    
return 0;
}

posted on 2007-10-07 01:00 lovedday 閱讀(251) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


公告

導航

統計

常用鏈接

隨筆分類(178)

3D游戲編程相關鏈接

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久青草欧美一区二区三区| 午夜久久美女| 欧美日韩高清在线播放| 欧美在线不卡视频| 亚洲人成网在线播放| 欧美在线日韩| 久久久精品一区二区三区| 欧美成人精品在线| 亚洲大胆女人| 亚洲精品你懂的| 中日韩美女免费视频网址在线观看| 亚洲免费成人av| 国产亚洲人成a一在线v站 | 久久精品国产77777蜜臀| 一本大道久久a久久综合婷婷| 欧美国产日韩在线| 亚洲欧洲日本mm| 亚洲国产精品久久久久| 欧美黑人在线观看| 999在线观看精品免费不卡网站| 最新国产成人在线观看| 亚洲精品无人区| 亚洲欧美另类国产| 欧美在线视频导航| 欧美理论片在线观看| 欧美日韩免费在线观看| 欧美午夜一区| 在线精品亚洲| 中文精品99久久国产香蕉| 激情久久久久久久| 亚洲一区二区精品视频| 欧美专区日韩专区| 亚洲毛片av在线| 香蕉久久夜色精品国产使用方法| 免费看成人av| 国产精品福利网| 韩国三级电影一区二区| 亚洲欧美成人在线| 久久阴道视频| 午夜精品久久久久久久99热浪潮| 久久亚洲捆绑美女| 欧美视频一区二区三区…| 亚洲国产精品一区二区久| 在线一区二区三区四区五区| 欧美激情一区二区三区全黄| 宅男66日本亚洲欧美视频| 久久精品久久综合| 国产欧美在线视频| 99精品国产热久久91蜜凸| 蜜臀久久99精品久久久画质超高清 | 久久全国免费视频| 欧美一区二区视频观看视频| 美女91精品| 国产精品手机在线| 亚洲视频第一页| 久久女同精品一区二区| 亚洲综合另类| 欧美另类久久久品| 亚洲国产精品免费| 欧美国产精品中文字幕| 亚洲性线免费观看视频成熟| 欧美天天视频| 99视频精品全国免费| 欧美暴力喷水在线| 久久精品欧洲| 国内精品久久久久久久97牛牛| 欧美在线二区| 亚洲欧美色一区| 国产精品户外野外| 欧美专区在线播放| 亚洲欧美在线观看| 国外成人网址| 久久九九精品99国产精品| 一本大道久久精品懂色aⅴ| 国产精品免费一区二区三区观看| 99视频精品在线| 亚洲视频导航| 国产精品视频免费在线观看| 樱桃视频在线观看一区| 欧美高潮视频| 免费91麻豆精品国产自产在线观看| 亚洲激情网址| 亚洲人成在线播放网站岛国| 欧美岛国激情| 欧美一区二区三区四区夜夜大片 | 亚洲福利国产精品| 欧美午夜精品理论片a级大开眼界| 亚洲免费观看| 亚洲一区二区三区高清| 午夜精品免费视频| 国产三级欧美三级日产三级99| 美日韩在线观看| 麻豆精品精华液| 狠狠色综合色区| 麻豆精品网站| 欧美成人有码| 久久xxxx精品视频| 久久久精品tv| 午夜精品久久久久| 久久电影一区| 91久久精品美女| 亚洲欧美国产另类| 国语自产精品视频在线看抢先版结局 | 亚洲国产合集| 久久午夜视频| 亚洲一区精彩视频| 午夜老司机精品| 最近看过的日韩成人| 亚洲欧美激情诱惑| 亚洲高清不卡av| 欧美一区二粉嫩精品国产一线天| 黄色小说综合网站| 亚洲无限乱码一二三四麻| 狠狠色香婷婷久久亚洲精品| 亚洲激情小视频| 亚洲第一综合天堂另类专| 日韩亚洲一区二区| 亚洲精品欧美一区二区三区| aa亚洲婷婷| 国产精品天美传媒入口| 亚洲精选成人| 影音先锋日韩资源| 亚洲欧美日韩精品一区二区| 亚洲国产精品成人va在线观看| 美女精品在线| 极品少妇一区二区三区精品视频 | 亚洲精品四区| 欧美一级片一区| 亚洲欧美在线aaa| 欧美14一18处毛片| 蜜臀久久99精品久久久久久9| 欧美视频中文字幕| 欧美69视频| 亚洲第一毛片| 欧美一级片在线播放| 欧美在线观看日本一区| 欧美成人亚洲| 午夜精品福利在线| 国产精品入口夜色视频大尺度 | 另类春色校园亚洲| 亚洲免费精品| 日韩一级片网址| 久久综合九色99| 欧美福利视频| 韩国精品一区二区三区| 久久久水蜜桃| 久久久精品tv| 国产精品亚洲一区二区三区在线| 亚洲午夜精品久久久久久浪潮| 亚洲日韩欧美视频一区| 免费在线亚洲欧美| 欧美成人黑人xx视频免费观看| 国产日韩欧美二区| 久久久久这里只有精品| 久久久www成人免费毛片麻豆| 国内外成人免费激情在线视频| 亚洲自拍偷拍麻豆| 亚洲欧美在线x视频| 国产婷婷精品| 欧美在线国产| 亚洲韩日在线| 这里只有精品视频在线| 久久在线视频| 亚洲人成亚洲人成在线观看图片| 美女视频黄免费的久久| 久久精品盗摄| 在线看日韩欧美| 久久在线免费观看视频| 久久久久久久久久久久久女国产乱| 国产日本欧美一区二区| 欧美一区二区在线视频| 欧美激情在线观看| 一本色道久久精品| 国产一区二区高清| 久久成人羞羞网站| 久久免费高清| 亚洲精品三级| 欧美日韩亚洲精品内裤| 在线亚洲欧美| 亚洲一区二区三区免费在线观看| 国产一区二区电影在线观看 | 在线亚洲一区二区| 欧美xart系列高清| 91久久精品一区二区别| 亚洲欧洲一区二区在线播放| 亚洲影院免费观看| 国产视频一区二区在线观看| 欧美高清在线精品一区| 9色精品在线| 欧美韩国一区| 欧美一级二级三级蜜桃| 国产精品久久久久毛片软件| 免费成人黄色| 亚洲桃花岛网站| 亚洲区一区二区三区| 午夜精品99久久免费| 日韩亚洲欧美中文三级| 国产亚洲欧美中文| 国产日韩三区| 欧美精品九九|