在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 ...