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

天行健 君子當自強而不息

創建游戲內核(12)【接口與實現分離版】

 

本篇是創建游戲內核(11)【接口與實現分離版】的續篇,關于該內核的細節說明請參考創建游戲內核(12),這個版本主要是按照功能劃分模塊的思想,并嚴格按照接口與實現相分離的原則來寫的,沒有用面向對象的思想來寫,沒有繼承沒有多態。大家可以對比兩個版本,比較優劣。

 

接口:

BOOL create_font(LPD3DXFONT* font, 
                 
const char* face_name, long size,
                 BOOL is_bold, BOOL is_italic);

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

 

實現:

//-------------------------------------------------------------------
// create font object.
//-------------------------------------------------------------------
BOOL create_font(LPD3DXFONT* font, 
                 
const char* face_name, long size,
                 BOOL is_bold, BOOL is_italic)
{
    
// check condition
    if(g_d3d_device == NULL || face_name == NULL)
        
return FALSE;

    D3DXFONT_DESC _font_desc;

    
// 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, font)))
        
return FALSE;

    
return TRUE;
}

//-------------------------------------------------------------------
// Draw text.
//-------------------------------------------------------------------
BOOL draw_font(LPD3DXFONT font, const char* text,
               
long x_pos, long y_pos, long width, long height,
               D3DCOLOR color, DWORD format)
{
    
if(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(font->DrawText(NULL, text, -1, &_rect, format, color)))
        
return FALSE;

    
return TRUE;
}

 

測試代碼:

/***********************************************************************************
PURPOSE:
    Test font function.
***********************************************************************************/


#include <windows.h>
#include "core_framework.h"
#include "core_graphics.h"
#include "core_tool.h"

LPD3DXFONT g_font;

//--------------------------------------------------------------------------------
// Initialize data for game.
//--------------------------------------------------------------------------------
BOOL game_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;    

    
// create font object
    if(! create_font(&g_font, "Segoe Script", 32, FALSE, FALSE))
        
return FALSE;

    
return TRUE;
}

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

    
if(SUCCEEDED(g_d3d_device->BeginScene()))
    {
        draw_font(g_font, "reject object-oriented programming", 
                  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 game_shutdown()
{
    release_com(g_d3d_device);
    release_com(g_d3d);

    
return TRUE;
}

//--------------------------------------------------------------------------------
// 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 FALSE;

    run_game(game_init, game_frame, game_shutdown);
    
    
return 0;
}

 

點擊下載源碼和工程


程序截圖:


posted on 2007-10-04 15:28 lovedday 閱讀(202) 評論(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>
            久久99在线观看| 一本色道久久综合亚洲91| 久久天堂国产精品| 久久久999精品视频| 久久久久久久精| 免费亚洲电影在线观看| 欧美激情片在线观看| 欧美日韩国产精品自在自线| 欧美午夜精品久久久久免费视| 国产精品爱啪在线线免费观看| 国产精品尤物| 亚洲国产日韩欧美在线图片| 99精品福利视频| 欧美中文字幕| 亚洲国产精品欧美一二99| 亚洲裸体视频| 亚洲成人资源| 亚洲人成在线观看| 亚洲婷婷综合色高清在线| 小黄鸭精品aⅴ导航网站入口| 久久久久久久成人| 亚洲国产日韩欧美在线99 | 亚洲一区二区三区色| 久久精品视频va| 欧美视频在线观看| 影音先锋在线一区| 亚洲男人影院| 亚洲国产精品久久精品怡红院| 亚洲制服少妇| 欧美日韩精品一二三区| 国产欧美日韩视频在线观看| 亚洲精品看片| 久久―日本道色综合久久| 日韩午夜剧场| 欧美va亚洲va香蕉在线| 国产一区在线看| 亚洲综合电影一区二区三区| 欧美国产成人精品| 性欧美长视频| 国产精品免费看| 一区二区精品国产| 免费成人在线观看视频| 性色av一区二区三区在线观看| 欧美精品一区在线播放| 亚洲国产一区二区精品专区| 国产精品视区| 亚洲在线观看视频| 嫩草成人www欧美| 亚洲综合色激情五月| 欧美日韩在线观看一区二区三区| 一区在线免费| 久久天天躁夜夜躁狠狠躁2022| 一区二区高清视频在线观看| 欧美护士18xxxxhd| 亚洲精品日韩在线观看| 亚洲成人中文| 免播放器亚洲一区| 最新69国产成人精品视频免费| 可以看av的网站久久看| 欧美一区在线视频| 亚洲精品国产拍免费91在线| 久久久久久穴| 欧美亚洲系列| 国产欧美一区视频| 久久高清免费观看| 亚洲欧美文学| 国产一区二区视频在线观看| 久久久九九九九| 久久精品成人欧美大片古装| 黄色精品一区| 欧美成人自拍| 欧美精品观看| 亚洲欧美在线一区二区| 亚洲欧美在线看| 黄色影院成人| 亚洲福利久久| 欧美日韩系列| 欧美专区日韩视频| 久久综合网hezyo| 一区二区三区蜜桃网| 亚洲一区二区三区四区在线观看| 国产毛片久久| 亚洲成色精品| 国产精品伦一区| 毛片一区二区三区| 欧美精品www| 欧美一区二区成人6969| 久久久伊人欧美| 一区二区三区日韩精品视频| 亚洲免费视频一区二区| 在线日韩成人| 在线视频欧美日韩精品| 国产亚洲亚洲| 亚洲精品日韩激情在线电影| 国产女人18毛片水18精品| 欧美大片在线观看一区二区| 欧美日韩精品免费观看| 久久免费视频网| 欧美区二区三区| 久久久福利视频| 欧美日韩午夜在线| 免费在线欧美视频| 国产精品揄拍一区二区| 亚洲黄一区二区| 国产主播喷水一区二区| 亚洲国产日韩欧美在线99| 久久精品国产欧美激情| 久久精品国产欧美激情| 9i看片成人免费高清| 午夜老司机精品| 日韩视频三区| 久久er精品视频| 亚洲一级黄色| 欧美.日韩.国产.一区.二区| 性欧美暴力猛交69hd| 欧美巨乳在线| 欧美国产日韩一二三区| 好吊色欧美一区二区三区视频| 99精品视频一区二区三区| 国产一在线精品一区在线观看| 一区二区三区日韩欧美| 一本色道久久综合亚洲精品婷婷 | 一区二区不卡在线视频 午夜欧美不卡在| 国产精品女主播在线观看| 亚洲国产一区二区三区青草影视| 国产一区二区三区久久久久久久久| 亚洲美女在线观看| 亚洲精品一级| 久久综合伊人77777| 久久视频免费观看| 国产午夜精品在线观看| 亚洲欧美激情在线视频| 午夜精品福利在线观看| 国产精品视频免费一区| 亚洲视频一区二区免费在线观看| 夜夜精品视频| 欧美日韩黄色大片| 99国产精品久久久久久久| aa级大片欧美| 欧美午夜女人视频在线| 一本色道久久综合亚洲91| 亚洲一区在线免费| 国产精品亚洲美女av网站| 亚欧成人精品| 久久伊人精品天天| 亚洲国产日韩在线一区模特| 欧美aa国产视频| 日韩亚洲欧美一区二区三区| 亚洲欧美日韩国产综合在线| 国产精品自在线| 久久精品国内一区二区三区| 欧美成人免费va影院高清| 亚洲精品国产系列| 欧美午夜性色大片在线观看| 亚洲免费中文字幕| 免费一级欧美在线大片| 亚洲在线电影| 亚洲视频在线观看| 亚洲自拍16p| 国产女主播一区| 午夜亚洲激情| 久久在线91| 一本色道久久综合亚洲精品不 | 麻豆成人在线观看| 亚洲国产综合在线| 欧美欧美在线| 午夜一区二区三区在线观看| 欧美成人精品在线观看| 一区二区日韩欧美| 国产日韩欧美精品综合| 欧美77777| 午夜精彩视频在线观看不卡| 欧美成人精品福利| 亚洲欧美日韩精品久久亚洲区| 黄色工厂这里只有精品| 欧美四级在线| 美女国内精品自产拍在线播放| 99热免费精品在线观看| 裸体女人亚洲精品一区| 亚洲自拍偷拍一区| 亚洲狼人综合| 国产一区 二区 三区一级| 欧美精品日韩三级| 久久久久亚洲综合| 亚洲综合99| 亚洲精品视频二区| 老色鬼精品视频在线观看播放| 亚洲少妇一区| 亚洲欧洲综合另类| 黑人巨大精品欧美一区二区小视频 | 一区二区三区欧美在线| 伊人色综合久久天天| 国产精品无码永久免费888| 欧美精品激情在线观看| 久久久久中文| 欧美影院视频| 亚洲免费网址| 亚洲视频在线一区| 99热免费精品| 一本大道av伊人久久综合|