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

天行健 君子當自強而不息

創建游戲內核(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 閱讀(204) 評論(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免费视频| 久久国产免费看| 在线电影一区| 亚洲精选成人| 国产精品久久久久毛片软件| 午夜日韩福利| 久久亚洲综合色一区二区三区| 亚洲国产一区二区三区在线播 | 国产精品亚洲一区二区三区在线| 欧美一区视频| 久久久久久国产精品一区| 亚洲东热激情| 一本色道久久综合亚洲精品按摩| 国产精品一二一区| 欧美成人一品| 欧美日韩一区二区精品| 久久国产精品久久国产精品| 久久频这里精品99香蕉| 在线一区欧美| 午夜精品一区二区三区电影天堂| 伊人久久婷婷| 日韩一级二级三级| 好看不卡的中文字幕| 亚洲乱码国产乱码精品精98午夜 | 免费成人小视频| 亚洲一区影院| 免费成人黄色av| 欧美在线精品免播放器视频| 欧美14一18处毛片| 欧美在线二区| 欧美精品手机在线| 可以免费看不卡的av网站| 欧美日韩理论| 欧美成年人视频| 国产网站欧美日韩免费精品在线观看| 欧美国产日韩xxxxx| 国产精品欧美在线| 亚洲全部视频| 国语自产在线不卡| 亚洲香蕉在线观看| 日韩视频精品| 久久婷婷一区| 久久色在线播放| 国产精品午夜国产小视频| 亚洲国产精品一区二区www在线| 国产欧美日韩亚洲精品| 一本大道久久a久久精二百| 亚洲国产一区二区三区在线播| 欧美一级精品大片| 亚洲欧美日本国产专区一区| 欧美日韩 国产精品| 亚洲国产裸拍裸体视频在线观看乱了| 狠狠色综合色综合网络| 午夜精品久久久久久久99热浪潮| 亚洲少妇一区| 欧美日韩国产综合视频在线观看| 欧美国产在线电影| 亚洲国产日韩一区二区| 久久午夜色播影院免费高清| 久久一区二区三区国产精品| 国产婷婷一区二区| 欧美一区二区三区另类| 欧美在线视频免费播放| 国产精品亚发布| 午夜精品久久| 久久综合中文色婷婷| 合欧美一区二区三区| 久久精品72免费观看| 久久综合网hezyo| 在线 亚洲欧美在线综合一区| 久久久精品2019中文字幕神马| 久久久人成影片一区二区三区观看 | 日韩网站在线看片你懂的| 一区二区三区 在线观看视| 欧美日本一道本在线视频| 亚洲精选成人| 性欧美8khd高清极品| 国产区精品在线观看| 性做久久久久久久久| 巨乳诱惑日韩免费av| 亚洲黄色视屏| 欧美色网一区二区| 亚洲欧美一区二区三区久久| 久久久五月天| 亚洲精品视频二区| 欧美色另类天堂2015| 欧美亚洲网站| 亚洲国产精品一区| 午夜视频在线观看一区二区| 国内自拍视频一区二区三区| 欧美成人免费在线视频| 宅男噜噜噜66国产日韩在线观看| 欧美一区二区免费视频| 狠狠入ady亚洲精品经典电影| 狂野欧美激情性xxxx欧美| 亚洲欧洲综合另类在线| 欧美一区二区三区在线看| 在线观看亚洲| 国产精品igao视频网网址不卡日韩| 新67194成人永久网站| 欧美大片免费久久精品三p | 亚洲视频图片小说| 激情欧美一区二区三区在线观看| 欧美精品粉嫩高潮一区二区 | 欧美freesex8一10精品| 亚洲永久精品国产| 亚洲国产精品va在线看黑人| 国产精品久久久久毛片软件| 美女视频黄a大片欧美| 亚洲综合色噜噜狠狠| 欧美福利网址| 久久激情婷婷| 亚洲影视中文字幕| 亚洲精品精选| 一区二区三区在线观看视频| 国产精品男gay被猛男狂揉视频| 浪潮色综合久久天堂| 亚洲欧美日本在线| 日韩亚洲视频在线| 亚洲国产精品日韩| 免费成人av资源网| 久久久精品一区二区三区| 亚洲天堂第二页| 日韩视频在线一区| 在线观看91久久久久久| 国产一区二区中文字幕免费看| 欧美网站在线| 欧美日韩成人网| 欧美激情亚洲另类| 欧美高清在线精品一区| 久久婷婷成人综合色| 久久久噜噜噜久久人人看| 欧美一区二区三区久久精品| 亚洲欧美中文字幕| 亚洲欧美中文另类| 亚洲一区二区三区欧美 | 久久麻豆一区二区| 久久久久久午夜| 久久久精品欧美丰满| 欧美一区二区在线免费观看| 亚洲已满18点击进入久久| 亚洲永久免费观看| 午夜精品一区二区三区在线| 亚洲综合色自拍一区| 中文成人激情娱乐网| 一区二区三区精品国产| 一区二区免费在线观看| 亚洲图色在线| 亚洲欧美网站| 欧美在线视频一区二区| 久久久久天天天天| 美女网站久久| 欧美激情视频网站| 亚洲精品资源| 亚洲免费在线视频| 久久精品二区三区| 男同欧美伦乱| 欧美日韩1080p| 国产精品免费一区豆花| 国产一本一道久久香蕉| 禁断一区二区三区在线| 亚洲国内高清视频| 亚洲午夜一区二区三区| 欧美影院视频| 欧美91视频| 99在线|亚洲一区二区| 亚洲综合色丁香婷婷六月图片| 亚洲欧美综合| 欧美fxxxxxx另类| 国产精品看片资源| 在线欧美福利| 亚洲一区二区在线看| 久久日韩粉嫩一区二区三区| 亚洲国产欧美一区二区三区久久 | 欧美日韩影院| 国产一区二区三区四区三区四| 亚洲国产成人久久综合| 亚洲视频中文| 另类综合日韩欧美亚洲| 日韩视频免费在线观看| 欧美在线在线| 欧美日韩一级视频| 影音先锋久久精品| 午夜欧美不卡精品aaaaa| 欧美福利一区二区| 亚洲专区国产精品| 欧美精品一区二区三区很污很色的 | 黄色成人片子| 国产精品99久久久久久人| 久热这里只精品99re8久| 99在线|亚洲一区二区| 久久综合给合久久狠狠色| 国产精品你懂的在线欣赏| 亚洲国产专区| 老司机亚洲精品|