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

天行健 君子當自強而不息

創建游戲內核(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 閱讀(253) 評論(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>
            一本色道久久综合| 亚洲国产精品成人| 亚洲欧洲一区二区三区在线观看| 亚洲欧美一区二区激情| 欧美人体xx| 在线成人小视频| 久久久国产午夜精品| 亚洲欧美视频| 国产麻豆日韩欧美久久| 欧美亚洲视频在线看网址| 亚洲激情在线| 欧美精品不卡| 中文亚洲欧美| 一区二区av在线| 国产精品入口日韩视频大尺度| 一本色道久久综合狠狠躁篇怎么玩| 亚洲国产精选| 欧美人成在线| 亚洲在线视频观看| 亚洲手机视频| 国产视频在线观看一区| 欧美黄色成人网| 欧美在线视频a| 在线观看国产日韩| 欧美福利一区二区三区| 欧美风情在线| 一本色道久久综合亚洲精品不 | 国产精品一区二区三区四区五区| 国内精品久久久久久久97牛牛| 久久久久久久一区二区三区| 久久中文在线| 亚洲全黄一级网站| 一区二区三区高清在线观看| 国产日韩一区| 欧美国产日韩亚洲一区| 欧美成人第一页| 亚洲美女视频| 午夜精彩视频在线观看不卡| 国内精品久久久久久久影视麻豆| 亚洲高清三级视频| 欧美日韩国产小视频| 久久综合图片| 欧美色网一区二区| 亚洲国产成人精品女人久久久 | 欧美久久九九| 久久精品一区中文字幕| 另类综合日韩欧美亚洲| 亚洲午夜未删减在线观看| 亚洲伦理一区| 在线观看视频亚洲| 在线综合亚洲欧美在线视频| 在线看国产一区| 亚洲综合首页| 亚洲精品一级| 久久av最新网址| 亚洲网站在线看| 免费成人av| 美女主播精品视频一二三四| 国产精品久久久久毛片大屁完整版| 欧美成人免费在线| 国产日韩一区二区| 99在线精品观看| 亚洲精品国产精品国自产观看浪潮| 亚洲欧美日韩中文在线制服| 亚洲色图综合久久| 玖玖国产精品视频| 久久国内精品自在自线400部| 欧美激情四色| 欧美激情一二区| 精品成人国产在线观看男人呻吟| 亚洲午夜在线观看| 国产亚洲高清视频| 这里只有视频精品| 一区二区三区四区蜜桃| 免费在线一区二区| 欧美高清不卡在线| 红桃视频成人| 久久精品国产69国产精品亚洲| 欧美亚洲一区二区在线观看| 欧美午夜美女看片| 亚洲乱码国产乱码精品精98午夜| 亚洲欧洲精品一区二区三区不卡| 欧美在线视频一区二区| 午夜视频在线观看一区二区三区| 欧美精品免费观看二区| 亚洲国产你懂的| 亚洲人成在线播放| 欧美成人精品福利| 亚洲高清在线| 日韩视频中午一区| 欧美日韩一区二区三区四区在线观看| 最新精品在线| 99在线精品观看| 欧美精品尤物在线| 欧美成ee人免费视频| 国语自产精品视频在线看8查询8| 亚洲黄色小视频| 亚洲一二区在线| 国产精品久久一级| 亚洲视频日本| 久久精品一区蜜桃臀影院| 国产日韩欧美在线视频观看| 麻豆精品一区二区综合av| 亚洲国产欧美日韩| 亚洲视频在线播放| 国产日韩一区欧美| 久久午夜精品一区二区| 91久久精品国产91久久性色| 日韩亚洲视频在线| 国产精品高潮呻吟久久| 99riav国产精品| 麻豆精品在线视频| 亚洲毛片网站| 国产精品嫩草影院av蜜臀| 亚洲欧美在线x视频| 亚洲永久字幕| 亚洲第一黄色网| 欧美日韩不卡合集视频| 午夜精品久久久久久99热| 鲁大师成人一区二区三区| 日韩午夜在线视频| 国产一区欧美日韩| 欧美黄色大片网站| 亚洲欧美制服中文字幕| 欧美成人a视频| 亚洲一区二区免费视频| 国产亚洲欧美一区在线观看| 欧美激情 亚洲a∨综合| 午夜久久电影网| 亚洲精品久久久久久久久久久久| 午夜视频一区二区| 日韩一级不卡| 今天的高清视频免费播放成人| 欧美不卡高清| 欧美在线观看视频一区二区| 欧美 日韩 国产 一区| 亚洲视频成人| 亚洲福利小视频| 国产精品视频免费一区| 久久亚洲欧美国产精品乐播| 亚洲一区在线看| 99精品99| 亚洲国产一区在线观看| 久久先锋资源| 欧美一区二区私人影院日本| 日韩视频一区| 亚洲国产一区二区视频| 国产农村妇女毛片精品久久麻豆| 玖玖玖国产精品| 久久国产精品色婷婷| 亚洲一区二区3| 一区二区三区国产精品| 亚洲国产精品久久| 欧美成人午夜剧场免费观看| 久久人人爽爽爽人久久久| 欧美一区二区三区婷婷月色 | 欧美在线观看视频一区二区三区 | 午夜精品久久久| 亚洲午夜av电影| 日韩天堂在线视频| 亚洲靠逼com| 亚洲卡通欧美制服中文| 亚洲国产欧美久久| 亚洲国产女人aaa毛片在线| 黄色工厂这里只有精品| 国内精品一区二区| 国产午夜精品理论片a级探花| 国产精品女主播| 国产麻豆综合| 国产日韩精品久久| 狠狠色狠狠色综合日日tαg| 国产一区二区三区不卡在线观看| 国产日韩成人精品| 国外精品视频| 亚洲韩国精品一区| 亚洲激情小视频| 一本久久综合亚洲鲁鲁| 亚洲视频在线看| 亚洲欧美电影院| 香蕉久久国产| 久久婷婷国产麻豆91天堂| 毛片一区二区三区| 亚洲精品视频啊美女在线直播| 欧美激情久久久久| 日韩午夜三级在线| 亚洲一区二区视频在线观看| 欧美亚洲午夜视频在线观看| 久久久噜噜噜久久狠狠50岁| 欧美成人一区二区三区在线观看| 欧美高清在线播放| 欧美婷婷在线| 狠狠久久亚洲欧美专区| 亚洲国产精品久久91精品| 在线日韩成人| 亚洲伊人观看| 久久久国产精品一区二区三区| 亚洲一区二区在线视频| 久久精品日韩欧美| 欧美高清一区| 亚洲午夜精品视频|