3d遊戲框架(第乙個3d遊戲例項)中

2021-04-22 10:02:06 字數 2541 閱讀 1338

在d3d::initd3d中我們談到它完成了主顯示視窗的建立,下面我們了解下視窗是如何被建立的。

視窗建立的步驟如下:

1.設計乙個視窗類。

2.註冊視窗。

3.建立視窗。

4.顯示及更新視窗。

在d3d::initd3d  的**中:

wndclass wc;

wc.style         = cs_hredraw | cs_vredraw; //視窗類的型別

wc.lpfnwndproc   = (wndproc)d3d::wndproc; //視窗過程函式

wc.cbcl***tra    = 0; //用於設定視窗結構體附加記憶體空間

wc.cbwndextra    = 0; //用於設定視窗註冊時分配的附加記憶體空間

//註冊視窗類

if( !registerclass(&wc) )

//建立視窗

if( !hwnd )

//顯示及更新視窗

::showwindow(hwnd, sw_show);

::updatewindow(hwnd);

d3d::initd3d完成的另乙個功能是初始化driect3d,

初始化driect3d的步驟如下:

1.獲得乙個idirect3d9介面指標,通過這個介面獲得裝置資訊(後面檢查裝置的相容性會用到)和建立idirect3ddevice介面。

2.檢查硬體的相容性(顯示卡是否支援某種特性)。

3.填充d3dpresent_parameters結構。

4.建立裝置。

以下是初始化driect3d**:

// step 1: create the idirect3d9 object.

idirect3d9* d3d9 = 0;

d3d9 = direct3dcreate9(d3d_sdk_version);

if( !d3d9 )

// step 2: check for hardware vp.

d3dcaps9 caps;

d3d9->getdevicecaps(d3dadapter_default, devicetype, &caps);

int vp = 0;

if( caps.devcaps & d3ddevcaps_hwtransformandlight )

vp = d3dcreate_hardware_vertexprocessing;

else

vp = d3dcreate_software_vertexprocessing;

// step 3: fill out the d3dpresent_parameters structure.

d3dpresent_parameters d3***;

d3***.backbufferwidth            = width;

d3***.backbufferheight           = height;

d3***.backbufferformat           = d3dfmt_a8r8g8b8;

d3***.backbuffercount            = 1;

d3***.multisampletype            = d3dmultisample_none;

d3***.multisamplequality         = 0;

d3***.swapeffect                 = d3dswapeffect_discard;

d3***.hdevicewindow              = hwnd;

d3***.windowed                   = windowed;

d3***.enableautodepthstencil     = true;

d3***.autodepthstencilformat     = d3dfmt_d24s8;

d3***.flags                      = 0;

d3***.fullscreen_refreshrateinhz = d3dpresent_rate_default;

d3***.presentationinterval       = d3dpresent_interval_immediate;

// step 4: create the device.

hr = d3d9->createdevice(

d3dadapter_default,// primary adapter

devicetype,         // device type

hwnd,              // window associated with device

vp,                 // vertex processing

&d3***,             // present parameters

device);           // return created device

if( failed(hr) )

}

3d遊戲框架(第乙個3d遊戲例項)上

winmain int winapi winmain hinstance hinstance,hinstance previnstance,pstr cmdline,int showcmd if setup d3d entermsgloop display cleanup device releas...

3D遊戲之神 John Carmack

談到遊戲,從引爆電腦遊戲核彈的 doom 毀滅戰士 到讓無數玩家沉溺在死亡競賽中進行光榮與夢想戰鬥的 qyake 雷神之鎚 再到如今萬人聯機激情對抗的 半條命 和 反恐精英 都有著強大的遊戲引擎在背後支撐著這些偉大的遊戲,而這些引擎的背後,都鐫刻著同乙個人的名字 john carmack。如今,ca...

3D手機遊戲引擎

一,寒霜2引擎 frostbite 2 engine 但手機上貌似不支援 二,虛幻3引擎 unreal engine 3 沒用過 三,unity 引擎 本人使用過 以上3d引擎我推測應該都是基於 opengl es2.0圖形庫支援嵌入式裝置。2d手機遊戲引擎 一,cocos2d x cocos2d ...