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

天行健 君子當自強而不息

創建游戲內核(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 閱讀(201) 評論(0)  編輯 收藏 引用

公告

導航

統計

常用鏈接

隨筆分類(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| 久久久久久高潮国产精品视| 亚洲精品自在在线观看| 久久亚洲春色中文字幕| 亚洲自拍啪啪| 亚洲一级网站| 亚洲欧洲av一区二区| 欧美在线免费| 在线成人h网| 亚洲国产婷婷香蕉久久久久久99| 一区二区欧美日韩| 亚洲私人影吧| 亚洲第一视频| 中文av字幕一区| 欧美制服丝袜第一页| 久久免费国产精品1| 亚洲高清精品中出| 亚洲一区二区三区在线播放| 久久久综合激的五月天| 欧美日本国产精品| 国产日韩欧美精品综合| 日韩午夜激情| 久久精品国产欧美激情| 亚洲精品国产精品国自产在线| 午夜精品国产| 欧美日韩在线精品一区二区三区| 韩国女主播一区| 亚洲永久免费av| 亚洲福利小视频| 欧美一区二区在线免费播放| 欧美视频福利| 日韩午夜黄色| 亚洲电影在线| 久久精品国产亚洲5555| 国产精品丝袜白浆摸在线| 99精品国产一区二区青青牛奶| 久久综合给合| 欧美中日韩免费视频| 国产精品亚洲欧美| 亚洲天堂av在线免费观看| 欧美大片在线观看一区二区| 欧美在线观看日本一区| 国产精品一区久久| 亚洲综合视频在线| 这里只有精品视频| 亚洲视频网站在线观看| 免费视频亚洲| 久久精品国产久精国产思思| 国产精品福利在线| 亚洲视频日本| 国内综合精品午夜久久资源| 亚洲欧美日韩另类精品一区二区三区| 免费日韩av| 欧美在线看片| 99精品视频免费观看视频| 久久精品免费看| 国产午夜精品麻豆| 午夜精品久久久久久99热软件| 日韩一区二区久久| 欧美色综合天天久久综合精品| 亚洲精品五月天| 亚洲精品黄色| 欧美三级日韩三级国产三级| av成人黄色| 夜夜嗨av一区二区三区网页| 国产精品v欧美精品∨日韩| 亚洲曰本av电影| 亚洲免费一区二区| 国内精品一区二区三区| 久久久亚洲午夜电影| 久久综合久久综合这里只有精品| 揄拍成人国产精品视频| 欧美国产视频日韩| 欧美日韩亚洲另类| 午夜久久tv| 久久久久九九九九| 亚洲精品中文字幕在线观看| 99精品热视频| 国产在线视频欧美| 欧美福利视频一区| 欧美色综合天天久久综合精品| 欧美一级夜夜爽| 麻豆精品精品国产自在97香蕉| 99热这里只有成人精品国产| 亚洲综合色网站| 亚洲国产精品福利| 亚洲一区二区三区涩| 亚洲第一搞黄网站| 亚洲午夜电影网| 亚洲国产91精品在线观看| aⅴ色国产欧美| 亚洲高清视频一区| 日韩图片一区| 欧美在线观看你懂的| 亚洲免费视频成人| 国产精品一级久久久| 日韩一本二本av| 亚洲精品免费网站| 久久久青草青青国产亚洲免观| 香蕉成人久久| 国产手机视频精品| 午夜精品久久| 亚洲国产成人在线视频| 久久综合伊人77777蜜臀| 亚洲欧美国产一区二区三区| 久久精品国产一区二区三区| a4yy欧美一区二区三区| 久久高清一区| 亚洲女ⅴideoshd黑人| 欧美刺激性大交免费视频| 久久精品99国产精品日本| 欧美色区777第一页| 亚洲国产美女精品久久久久∴| 国产手机视频一区二区| 亚洲午夜精品视频| 一区二区三区av| 欧美激情91| 亚洲成人在线免费| 久久久噜久噜久久综合| 午夜精品福利视频| 欧美精品福利在线| 欧美大片国产精品| 在线观看福利一区| 久久av红桃一区二区小说| 欧美一区二区三区在线| 国产精品国产三级国产专播品爱网| 亚洲激情不卡| 亚洲美女中出| 欧美伦理91| 亚洲精品日韩久久| 亚洲免费观看高清在线观看| 免费成人在线视频网站| 美腿丝袜亚洲色图| 精品动漫3d一区二区三区免费| 亚洲欧美日本伦理| 久久丁香综合五月国产三级网站| 国产精品亚洲综合久久| 亚洲欧美日韩一区在线| 久久久青草婷婷精品综合日韩| 亚洲一级片在线看| 欧美一区二区日韩一区二区| 亚洲欧美日韩一区| 久久精品在这里| 男人的天堂亚洲在线| 欧美 日韩 国产一区二区在线视频| 午夜性色一区二区三区免费视频| 亚洲一区二区三区中文字幕在线| 宅男噜噜噜66一区二区66| 亚洲一区二区免费看| 国产亚洲成av人片在线观看桃| 亚洲欧美日韩国产综合| 久久久精品国产免费观看同学| 好男人免费精品视频| 久久亚洲综合网| 亚洲精品一二区| 欧美一级理论片| 在线精品视频在线观看高清| 欧美高清视频在线| 亚洲小少妇裸体bbw| 亚洲精品视频免费| 欧美3dxxxxhd| 亚洲一区二区三区在线看| 亚洲一区欧美激情| 国产亚洲一本大道中文在线| 噜噜噜躁狠狠躁狠狠精品视频| 久久久噜噜噜久久久| 久久成人综合网| 欧美视频在线看| 久久综合色综合88| 欧美国产视频一区二区| 亚洲一区二区三区四区在线观看| 国产精品99久久久久久久vr | 久久激情久久| 日韩一区二区精品| 亚洲女性裸体视频| 亚洲开发第一视频在线播放| 亚洲欧美另类中文字幕| 亚洲高清av| 午夜视频久久久| 亚洲午夜视频在线| 你懂的国产精品永久在线| 久久久精品国产免费观看同学| 欧美成人免费网| 猫咪成人在线观看| 亚洲第一二三四五区| 久久精品视频在线看| 欧美专区第一页| 国产综合色精品一区二区三区| 一区二区动漫| 欧美一区二区精品在线| 国产精品激情电影|