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

天行健 君子當自強而不息

創建游戲內核(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 閱讀(206) 評論(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>
            国产精品一区二区三区四区五区| 午夜在线电影亚洲一区| 午夜精品一区二区在线观看| 欧美午夜精品一区| 亚洲综合精品自拍| 亚洲午夜精品久久久久久app| 国产精品拍天天在线| 性8sex亚洲区入口| 国产在线观看91精品一区| 久久久国产精彩视频美女艺术照福利| 性欧美8khd高清极品| 伊人色综合久久天天| 亚洲第一区色| 欧美日韩一区二区视频在线| 午夜精品久久久久久久99热浪潮| 久久精彩免费视频| 亚洲精品国精品久久99热一| 日韩天堂av| 国产在线精品自拍| 欧美激情综合色| 国产精品精品视频| 免费亚洲电影| 欧美午夜电影在线观看| 久久另类ts人妖一区二区| 老巨人导航500精品| 一区二区成人精品| 性欧美办公室18xxxxhd| 日韩视频永久免费观看| 亚洲欧美日韩精品在线| 黑人一区二区| 一区二区三区 在线观看视| 国内伊人久久久久久网站视频| 欧美激情视频一区二区三区不卡| 国产精品理论片在线观看| 欧美成人精品不卡视频在线观看 | 久久成人精品一区二区三区| 久久久久久穴| 亚洲一二三区视频在线观看| 久久综合电影| 久久gogo国模啪啪人体图| 欧美成人a视频| 久久九九精品| 国产精品视频一二三| 亚洲国产精品传媒在线观看 | 99re6这里只有精品| 性伦欧美刺激片在线观看| 亚洲午夜激情网页| 免费成人激情视频| 久久久噜噜噜久久久| 国产精品久久久久9999| 亚洲精品国产拍免费91在线| 亚洲国产欧美在线| 久久国产精彩视频| 久久国产日韩欧美| 国产精品永久在线| 亚洲一区精彩视频| 亚洲欧美日韩在线| 欧美极品在线视频| 欧美国产日韩精品免费观看| 精品99一区二区| 欧美在线视频二区| 久久精品视频在线| 国产欧美亚洲视频| 午夜精品久久久久久久久| 亚洲综合色丁香婷婷六月图片| 欧美日韩色一区| 亚洲每日更新| 亚洲一区制服诱惑| 国产精品美腿一区在线看| 在线亚洲欧美视频| 亚洲一区二区三区色| 国产精品99免费看 | 在线电影一区| 久久麻豆一区二区| 欧美成人中文| 91久久久久久国产精品| 免费成人激情视频| 亚洲韩国一区二区三区| 一区二区日本视频| 国产精品一国产精品k频道56| 亚洲影院在线| 蜜桃精品一区二区三区| 亚洲国产精品成人精品| 欧美国产日韩免费| 亚洲视频www| 久久久中精品2020中文| 亚洲国产欧美在线人成| 欧美日韩精品免费看| 亚洲午夜一区二区三区| 久久夜色精品国产欧美乱| 亚洲国产精品成人一区二区| 欧美国产日韩在线观看| 亚洲性夜色噜噜噜7777| 久久久天天操| 亚洲人成人99网站| 国产精品日本精品| 久久精品一本久久99精品| 亚洲成色777777在线观看影院| 一区二区精品在线| 国产一区二区三区直播精品电影 | 久久午夜电影| 日韩小视频在线观看专区| 午夜一区在线| 亚洲国产精品成人精品| 国产精品日韩欧美综合| 狼人社综合社区| 亚洲尤物视频网| 亚洲电影自拍| 久久精品亚洲精品| 99re热这里只有精品视频| 国产伦精品一区二区三区高清版 | 欧美视频观看一区| 久久精品国产精品亚洲| 一本久道久久综合狠狠爱| 久久一区二区三区四区| 亚洲视频电影图片偷拍一区| 在线看无码的免费网站| 国产女精品视频网站免费 | 欧美电影在线观看完整版| 亚洲欧美电影在线观看| 亚洲国内在线| 欧美国产在线观看| 久久精品视频网| 午夜日韩在线观看| 久久精品视频导航| 国产精品一区二区三区免费观看| 久久国产精品久久国产精品| 亚洲精品永久免费| 欧美高清视频www夜色资源网| 久久国产精品毛片| 午夜亚洲性色福利视频| 一区二区三区日韩| 亚洲人成欧美中文字幕| 在线看欧美日韩| 伊人精品视频| 国产一区二区三区av电影| 国产精品区一区| 欧美午夜精品久久久久久超碰| 欧美激情亚洲另类| 欧美激情精品久久久久久变态| 久久女同互慰一区二区三区| 欧美影院精品一区| 欧美在线网站| 欧美一区二区免费视频| 亚洲曰本av电影| 午夜久久资源| 欧美伊久线香蕉线新在线| 日韩性生活视频| 亚洲激情二区| 夜久久久久久| 夜夜狂射影院欧美极品| 日韩一二三区视频| 99在线精品免费视频九九视| 99精品国产福利在线观看免费| 亚洲裸体在线观看| 在线视频精品一区| 亚洲视屏在线播放| 亚洲欧美日韩精品一区二区| 亚洲欧美在线网| 羞羞答答国产精品www一本 | 国产麻豆视频精品| 国产精品影视天天线| 国产日韩精品入口| 国内一区二区三区| 亚洲国产精品尤物yw在线观看| 亚洲日本乱码在线观看| aa级大片欧美三级| 欧美在线视频不卡| 暖暖成人免费视频| 日韩一级精品| 亚洲一区一卡| 国产欧美日韩免费| 欧美成人免费播放| 欧美裸体一区二区三区| 欧美日韩一区在线观看| 国产精品青草久久久久福利99| 国产午夜一区二区三区| 在线视频国内自拍亚洲视频| 日韩午夜激情av| 欧美在线一二三区| 亚洲国产高清在线观看视频| 一区二区欧美激情| 美女久久网站| 国产精品电影观看| 亚洲黄色在线| 欧美一区二区成人6969| 免费在线一区二区| 亚洲一区二区三| 麻豆av一区二区三区| 国产精品草莓在线免费观看| 国模私拍一区二区三区| 夜夜嗨av一区二区三区四季av| 亚洲欧美一区二区三区极速播放 | 欧美成人免费网| 亚洲一区二区视频在线| 欧美大片免费久久精品三p| 欧美在线一二三区| 欧美电影免费观看高清| 亚洲无线一线二线三线区别av| 麻豆成人av|