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

天行健 君子當(dāng)自強(qiáng)而不息

DXUT框架剖析(2)

DXUT框架用來(lái)幫助程序員花更少的時(shí)間來(lái)解決下列問(wèn)題:創(chuàng)建窗口、創(chuàng)建Direct3D設(shè)備、進(jìn)行消息循環(huán)和處理設(shè)備事件。在DXUT框架基礎(chǔ)上編寫(xiě)代碼,可以快速高效地進(jìn)行Direct3D程序設(shè)計(jì),大多數(shù)Direct3D SDK示例程序使用了DXUT框架。

下面的代碼是AppFrame示例程序的WinMain函數(shù):

INT WINAPI wWinMain( HINSTANCE, HINSTANCE, LPWSTR, int )
{
// Enable run-time memory check for debug builds.
#if defined(DEBUG) | defined(_DEBUG)
_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
#endif
    // Set the callback functions
DXUTSetCallbackD3D9DeviceAcceptable(IsD3D9DeviceAcceptable);
DXUTSetCallbackD3D9DeviceCreated(OnD3D9CreateDevice);
DXUTSetCallbackD3D9DeviceReset(OnD3D9ResetDevice);
DXUTSetCallbackD3D9FrameRender(OnD3D9FrameRender);
DXUTSetCallbackD3D9DeviceLost(OnD3D9LostDevice);
DXUTSetCallbackD3D9DeviceDestroyed(OnD3D9DestroyDevice);
DXUTSetCallbackDeviceChanging(ModifyDeviceSettings);
DXUTSetCallbackMsgProc(MsgProc);
DXUTSetCallbackFrameMove(OnFrameMove);
    // TODO: Perform any application-level initialization here
    // Initialize DXUT and create the desired Win32 window and Direct3D device for the application
    DXUTInit( true, true ); // Parse the command line and show msgboxes
DXUTSetHotkeyHandling( true, true, true ); // handle the default hotkeys
DXUTSetCursorSettings( true, true ); // Show the cursor and clip it when in full screen
DXUTCreateWindow( L"AppFrame Sample" );
DXUTCreateDevice( true, 640, 480 );
    // Start the render loop
DXUTMainLoop();
    // TODO: Perform any application-level cleanup here
    return DXUTGetExitCode();
}

在上面的代碼中,DXUT框架做了大部分的工作。它創(chuàng)建了一個(gè)窗口和一個(gè)Direct3D設(shè)備,處理消息循環(huán)、并當(dāng)事件發(fā)生時(shí)(例如重新設(shè)置設(shè)備或渲染一幀)調(diào)用應(yīng)用程序提供的回調(diào)函數(shù)。 DXUT框架是模塊化的,所以應(yīng)用程序可以使用DXUT框架的所有函數(shù)或其中的一部分。

下面這組代碼時(shí)一組注冊(cè)函數(shù)的調(diào)用:

    // Set the callback functions
    DXUTSetCallbackD3D9DeviceAcceptable(IsD3D9DeviceAcceptable);
    DXUTSetCallbackD3D9DeviceCreated(OnD3D9CreateDevice);
    DXUTSetCallbackD3D9DeviceReset(OnD3D9ResetDevice);
    DXUTSetCallbackD3D9FrameRender(OnD3D9FrameRender);
    DXUTSetCallbackD3D9DeviceLost(OnD3D9LostDevice);
    DXUTSetCallbackD3D9DeviceDestroyed(OnD3D9DestroyDevice);
    DXUTSetCallbackDeviceChanging(ModifyDeviceSettings);
    DXUTSetCallbackMsgProc(MsgProc);
    DXUTSetCallbackFrameMove(OnFrameMove);

以函數(shù)DXUTSetCallbackD3D9DeviceCreated為例,它的聲明如下:

Sets the Direct3D 9 device created callback function.

VOID DXUTSetCallbackD3D9DeviceCreated(
LPDXUTCALLBACKD3D9DEVICECREATED pCallback,
void* pUserContext
);

Parameters

pCallback
[in] Pointer to a LPDXUTCALLBACKD3D9DEVICECREATED callback function. If the callback function is supplied, it will be called after the Direct3D 9 device has been created. Device creation will happen during application initialization and if the device is changed. If NULL, DXUT will not notify the application about device creation.
pUserContext
[in] Pointer to a user-defined value which is passed to the callback function. Typically used by an application to pass a pointer to a data structure that provides context information for the callback function. The default value is NULL

Return Values

No return value.

Remarks

This function only needs to be called if the application supports rendering with Direct3D 9 device.

The LPDXUTCALLBACKD3D9DEVICECREATED callback function is the appropriate location for the application to create Direct3D 9 device resources that will live through a device reset such as D3DPOOL_MANAGED or D3DPOOL_SYSTEMMEM memory and that aren't tied to the back buffer size. Resources created in the LPDXUTCALLBACKD3D9DEVICECREATED callback function should be released in the LPDXUTCALLBACKD3D9DEVICEDESTROYED callback function.

LPDXUTCALLBACKD3D9DEVICECREATED

Application-defined resource creation callback function, called by DXUT after the Direct3D 9 device is created. Passes a pointer to the newly created Direct3D 9 device.

HRESULT LPDXUTCALLBACKD3D9DEVICECREATED(
IDirect3DDevice9 * pd3dDevice,
CONST D3DSURFACE_DESC * pBackBufferSurfaceDesc,
void* pUserContext
);

Parameters

pd3dDevice
[out] Pointer to the newly created Direct3D 9 device.
pBackBufferSurfaceDesc
[out] Pointer to the back buffer surface description
pUserContext
[in] Pointer to a user-defined value which is passed to the callback function. Typically used by an application to pass a pointer to a data structure that provides context information for the callback function. The default value is NULL

Return Values

In general, if no error occurs, program the function to return S_OK. Program the function to return an HRESULT failure code if the function fails. If DXUT receives a failure HRESULT code, it shuts down the application.

Remarks

The LPDXUTCALLBACKD3D9DEVICECREATED callback function is the appropriate location for the application to create Direct3D 9 device resources that will live through a device reset such as D3DPOOL_MANAGED or D3DPOOL_SYSTEMMEM memory and that aren't tied to the back buffer size. Resources created in the LPDXUTCALLBACKD3D9DEVICECREATED callback function should be released in the LPDXUTCALLBACKD3D9DEVICEDESTROYED callback function.

該注冊(cè)函數(shù)的作用在于通知應(yīng)用程序,在應(yīng)用程序的初始化期間或當(dāng)設(shè)備改變時(shí),如果需要?jiǎng)?chuàng)建D3DPOOL_MANAGED類型的資源,就會(huì)自動(dòng)調(diào)用函數(shù)OnD3D9CreateDevice()進(jìn)行創(chuàng)建。而程序員需要做的就是編寫(xiě)OnD3D9CreateDevice()函數(shù),告訴應(yīng)用程序創(chuàng)建哪些資源以及如何創(chuàng)建。其他注冊(cè)函數(shù)的作用同樣是通知應(yīng)用程序,使應(yīng)用程序在特定時(shí)機(jī)調(diào)用注冊(cè)函數(shù)指定的具體回調(diào)函數(shù)。程序員的核心工作就是實(shí)現(xiàn)這些具體的回調(diào)函數(shù),事實(shí)上,這種構(gòu)架正是DXUT框架的核心,也可以把它看成是區(qū)別于Direct3D API程序的地方。

DXUT框架提供了下列服務(wù),幫助程序員創(chuàng)建一個(gè)應(yīng)用程序:

(1)簡(jiǎn)化窗口和設(shè)備的創(chuàng)建。

(2)聲明設(shè)備事件(創(chuàng)建、重置、丟失、銷毀)和窗口事件(消息、鍵盤(pán)、鼠標(biāo))。

(3)在窗口模式和全屏模式間切換,在硬件抽象層設(shè)備和參考設(shè)備間切換。

(4)高分辨率計(jì)時(shí)器。

(5)為自動(dòng)測(cè)試提供命令行支持。

(6)通過(guò)對(duì)話框或API選擇設(shè)備。

(7)紋理GUI控件組,包括IME-enable文本框。

(8)附加雜類,例如簡(jiǎn)單的攝像機(jī)類。

為使用方便,DXUT框架支持Direct3D設(shè)備和窗口一一對(duì)應(yīng)(一個(gè)設(shè)備只能對(duì)應(yīng)一個(gè)窗口)。對(duì)于需要同時(shí)使用多個(gè)設(shè)備或顯示多個(gè)Direct3D窗口的高級(jí)應(yīng)用程序,該框架不支持。不過(guò),大多數(shù)應(yīng)用程序只使用一個(gè)窗口和一個(gè)Direct3D設(shè)備,所以大部分應(yīng)用程序都能使用該框架。


posted on 2008-05-15 12:12 lovedday 閱讀(2316) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


公告

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

隨筆分類(178)

3D游戲編程相關(guān)鏈接

搜索

最新評(píng)論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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| 亚洲国产一区二区精品专区| 欧美~级网站不卡| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲大片一区二区三区| 欧美国产日韩一区二区| 亚洲一本大道在线| 性久久久久久久久久久久| 一色屋精品视频在线看| 亚洲国产日韩一级| 国产精品理论片在线观看| 久久久久久久久久久成人| 久久躁狠狠躁夜夜爽| 日韩视频在线一区二区三区| 中文亚洲欧美| 黄网站色欧美视频| 亚洲精品国产精品国产自| 国产精品久久久久aaaa| 免费人成精品欧美精品| 欧美日韩精品系列| 久久婷婷蜜乳一本欲蜜臀| 欧美国产激情二区三区| 欧美一区视频在线| 欧美精品 国产精品| 欧美一区二区三区在线视频| 蜜臀av性久久久久蜜臀aⅴ| 亚洲香蕉成视频在线观看 | 91久久久久久久久| 在线综合亚洲欧美在线视频| 一区精品在线| 亚洲男人天堂2024| 亚洲免费av电影| 欧美一区在线直播| 亚洲综合丁香| 欧美国产精品久久| 久久婷婷综合激情| 国产精品每日更新| 亚洲国产欧美一区二区三区同亚洲| 国产精品久久久久久久久久妞妞| 欧美 日韩 国产精品免费观看| 国产精品成人观看视频国产奇米| 男女av一区三区二区色多| 国产精品劲爆视频| 亚洲美女精品成人在线视频| 在线观看日韩av电影| 亚洲欧美制服中文字幕| 亚洲小说区图片区| 欧美日韩成人一区二区三区| 欧美国产大片| 在线免费日韩片| 欧美在线在线| 久久大香伊蕉在人线观看热2| 国产精品mm| 亚洲精品中文字幕在线| 亚洲经典三级| 欧美国产丝袜视频| 亚洲高清视频中文字幕| 亚洲福利久久| 美乳少妇欧美精品| 免费日韩成人| 亚洲人成久久| 欧美国产欧美亚洲国产日韩mv天天看完整| 久久青草欧美一区二区三区| 国产婷婷色一区二区三区| 亚洲欧美国产精品va在线观看 | 亚洲欧洲一二三| 欧美成ee人免费视频| 欧美国产专区| 亚洲美女精品一区| 欧美区在线播放| 亚洲日本精品国产第一区| 一本久道久久综合中文字幕| 欧美日韩精品系列| 亚洲午夜免费福利视频| 久久国产精品一区二区三区| 国产亚洲综合在线| 久久精品一区蜜桃臀影院| 麻豆久久婷婷| 亚洲免费久久| 欧美午夜精品久久久久免费视| 99riav国产精品| 久久成人免费| 亚洲国产成人高清精品| 欧美成人免费观看| 在线中文字幕不卡| 久久三级视频| 亚洲精品视频在线看| 国产精品久久| 久久久精品视频成人| 亚洲国产成人精品女人久久久| 亚洲图片在线| 亚洲第一区色| 国产精品国产三级国产aⅴ无密码| 性欧美暴力猛交69hd| 亚洲成色www久久网站| 亚洲无吗在线| 一区视频在线看| 欧美日韩视频在线| 久久九九99| 9人人澡人人爽人人精品| 久久国产精品99国产精| 亚洲欧洲日本专区| 国产欧美一区二区精品性色| 老司机午夜精品视频在线观看| 亚洲激情偷拍| 久久综合99re88久久爱| 亚洲图片在线观看| 亚洲国产精品ⅴa在线观看 | 欧美日韩成人综合| 欧美专区在线观看一区| 99精品欧美一区| 免费日韩av| 久久激情五月婷婷| 在线亚洲高清视频| 亚洲国产天堂久久综合| 国产午夜精品一区二区三区欧美 | 欧美在线观看网站| 一区二区精品| 亚洲精品国产欧美| 六月婷婷久久| 久久精品视频在线看| 亚洲先锋成人| 夜夜嗨av一区二区三区四区| 亚洲大片精品永久免费| 国产视频久久| 国产免费亚洲高清| 国产精品海角社区在线观看| 欧美另类videos死尸| 欧美mv日韩mv国产网站app| 久久精品日韩欧美| 欧美一区二区三区精品电影| 一区二区三区欧美视频| 99精品国产福利在线观看免费| 亚洲成人资源| 亚洲高清不卡在线| 亚洲成色精品| 亚洲国产裸拍裸体视频在线观看乱了| 老司机午夜精品| 久久综合狠狠综合久久激情| 久久网站热最新地址| 久久亚洲高清| 欧美成人精品h版在线观看| 麻豆精品视频在线观看视频| 久久久精品国产一区二区三区| 欧美一区二区免费| 久久国产一区| 美女脱光内衣内裤视频久久影院 | 99riav久久精品riav| 99国产精品自拍| 亚洲一区免费| 欧美综合第一页| 老司机午夜精品视频| 欧美搞黄网站| 亚洲伦理精品| 亚洲午夜久久久久久尤物 | 欧美大片专区| 91久久精品日日躁夜夜躁国产| 欧美激情麻豆| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美a级在线| 亚洲黄色成人久久久| 亚洲美女色禁图| 亚洲特黄一级片| 久久久人成影片一区二区三区| 久久综合九色综合欧美狠狠| 欧美激情在线观看| 国产精品v日韩精品| 国模私拍视频一区| 亚洲伦理精品| 欧美一二三区在线观看| 开元免费观看欧美电视剧网站| 欧美国产免费| 亚洲香蕉网站| 美女黄色成人网| 国产欧美日韩| 亚洲乱亚洲高清| 久久久91精品国产| 亚洲精品国产无天堂网2021| 亚洲伊人色欲综合网| 欧美成人精品在线视频| 国产乱码精品一区二区三区五月婷| 在线不卡免费欧美| 亚洲欧美激情诱惑| 亚洲福利小视频| 欧美亚洲免费| 欧美性猛交xxxx免费看久久久| 韩国成人福利片在线播放| 亚洲网站视频| 欧美国产精品一区| 西瓜成人精品人成网站| 欧美日韩精品一区二区三区| 伊人婷婷欧美激情| 久久国产一区二区三区| 日韩亚洲精品视频| 欧美+日本+国产+在线a∨观看|