DXUT框架剖析
DXUT框架剖析(14) 摘要:
控件是用戶接口的重要組成部分,為了便于用戶操作,為程序界面添加各種控件是非常好的方法。DXUT框架為在Direct3D程序中添加各種控件提供了支持。為了便于加載控件和處理各控件的消息,通常先在窗口中加載對話框,然后在對話框中添加響應的控件,由對話框來管理控件。為了統一管理各個對話框,還需要定義對話框資源管理器類CDXUTDialogResourceManager的一個對象,在程序開始時,調用各個對話框的Init函數和對話框資源管理對象進行初始化
DXUT框架剖析(13) 摘要:
DXUT框架對文本繪制進行了封裝,提供了類CDXUTHelper來簡化文本顯示,使用該接口大體分為3個步驟:初始化ID3DXSprite和ID3DXFont對象,顯示文本,釋放ID3DXSprite和ID3DXFont對象。
DXUT框架剖析(12) 摘要: DXUT暫停函數:
DXUTPause:將框架的內部計數器和(或)渲染過程設為暫停狀態。
DXUTRenderingPaused:檢查當前設備的渲染狀態是否處在暫停狀態。
DXUTIsTimePaused:檢查當前設備的計時器是否處在暫停狀態。
DXUTPause:將框架的內部計數器和(或)渲染過程設為暫停狀態。
DXUTRenderingPaused:檢查當前設備的渲染狀態是否處在暫停狀態。
DXUTIsTimePaused:檢查當前設備的計時器是否處在暫停狀態。
DXUT框架剖析(11) 摘要: DXUT統計函數:
DXUTGetFPS: 獲取當前每秒提交的幀數。
DXUTGetFrameStats:獲取一個指向字符串的指針,該字符串包括每秒幀數、分辨率、后臺緩沖區格式、深度緩沖區格式。
DXUTGetDeviceStats:獲取一個指向字符串的指針,該字符串包括當前設備類型、頂點運算行為和設備名。
DXUTGetFPS: 獲取當前每秒提交的幀數。
DXUTGetFrameStats:獲取一個指向字符串的指針,該字符串包括每秒幀數、分辨率、后臺緩沖區格式、深度緩沖區格式。
DXUTGetDeviceStats:獲取一個指向字符串的指針,該字符串包括當前設備類型、頂點運算行為和設備名。
DXUT框架剖析(10) 摘要: 管理DXUT框架的函數:
DXUTResetFrameworkState: 將框架狀態重置為初始默認狀態,之前設置的框架狀態改變將失效。
DXUTShutdown: 觸發程序終止和清空框架。
DXUTGetExitCode: 獲取框架的退出代碼。
DXUTResetFrameworkState: 將框架狀態重置為初始默認狀態,之前設置的框架狀態改變將失效。
DXUTShutdown: 觸發程序終止和清空框架。
DXUTGetExitCode: 獲取框架的退出代碼。
DXUT框架剖析(9) 摘要:
下面列出允許改變DXUT行為和獲取內部變量的函數,這些函數在使用DXUT框架的Direct3D程序中是非常實用的。
DXUT框架剖析(8) 摘要: Direct3D API的設計使程序能比較容易地處理各種錯誤,盡管大多數Direct3D
API函數返回HTRSULT值,但只有一部分函數返回設備錯誤,如D3DERR_DEVICELOST或
D3DERR_DRIVERINTERNALERROR。但是通常的Direct3D應用程序使用多種API函數,當傳遞的參數不合要求時,將返回
D3DERR_INVALIDCALL。
當開發Direct3D應用程序時,應該檢查所有的API調用是否成功,如果出現一個沒有預測到的失敗調用,應用程序應立即給出通知或記錄該錯誤。使用這種方法,開發人員能很快發現哪些API函數的調用是不正確的。一個正確調用Direct3D API函數的應用程序應能安全地忽略大多數Direct3D API函數的失敗調用,除了一些關鍵性的API函數,如Present()或TestCooperativeLevel(),這些函數返回的錯誤應用程序不能忽略。
當開發Direct3D應用程序時,應該檢查所有的API調用是否成功,如果出現一個沒有預測到的失敗調用,應用程序應立即給出通知或記錄該錯誤。使用這種方法,開發人員能很快發現哪些API函數的調用是不正確的。一個正確調用Direct3D API函數的應用程序應能安全地忽略大多數Direct3D API函數的失敗調用,除了一些關鍵性的API函數,如Present()或TestCooperativeLevel(),這些函數返回的錯誤應用程序不能忽略。
DXUT框架剖析(7) 摘要: 框架也提供了幀事件,它在渲染過程中的每一幀被調用,應用程序應該注冊并實現這些回調函數。
DXUT框架剖析(6) 摘要:
在窗口和設備創建好之后,應用程序需要使用消息循環處理窗口消息、更新和渲染場景、處理設備事件。應用程序可以實現自己的消息循環,也可以使用DXUT消息循環,注冊相應的回調函數,可以讓DXUT處理設備、幀消息事件。
為使用DXUT框架的消息循環,可以調用DXUTMainLoop()函數.
為使用DXUT框架的消息循環,可以調用DXUTMainLoop()函數.
DXUT框架剖析(5) 摘要:
應用程序可以通過DXUTSetCallbackDeviceChanging()設置回調函數來修改Direct3D設備的創建設置。
回調函數ModifyDeviceSettings()返回一個布爾值,如果應用程序返回 TRUE,DXUT框架繼續像在正常情況下那樣進行設備創建。如果返回FALSE,框架不能改變設備,如果已有一個設備,則繼續使用當前設備。如果框架提出的請求是改變到一個應用程序不能使用的設備,應用程序可以拒絕該請求。例如,在一個多顯示器配置中,默認情況下在顯示器之間拖動窗口將使框架改變設備。但如果應用程序不能使用其他設備,它就必須拒絕這種改變并繼續使用當前設備。
回調函數ModifyDeviceSettings()返回一個布爾值,如果應用程序返回 TRUE,DXUT框架繼續像在正常情況下那樣進行設備創建。如果返回FALSE,框架不能改變設備,如果已有一個設備,則繼續使用當前設備。如果框架提出的請求是改變到一個應用程序不能使用的設備,應用程序可以拒絕該請求。例如,在一個多顯示器配置中,默認情況下在顯示器之間拖動窗口將使框架改變設備。但如果應用程序不能使用其他設備,它就必須拒絕這種改變并繼續使用當前設備。
DXUT框架剖析(4) 摘要:
通常可以用標準的Direct3D方法CreateDevice()創建一個Direct3D設備,這個方法需要一個有效的顯示適配器、設備類型(硬件抽象層設備或參考設備)、窗口句柄、運行標志(軟件/硬件頂點運算模式和其他驅動標志)和提交參數。更重要的是,結構體
D3DPRESENT_PARAMETERS有許多成員指定了后臺緩沖區的設置、多重采樣設置、交換效果、窗口模式、深度緩沖區設置、刷新頻率、提交間隔和提交標志等。
為所有的參數選擇合適的設置是比較繁瑣的,DXUT框架使用函數DXUTCreateDevice()簡化了Direct3D設備的創建。
為所有的參數選擇合適的設置是比較繁瑣的,DXUT框架使用函數DXUTCreateDevice()簡化了Direct3D設備的創建。
DXUT框架剖析(3) 摘要: 使用DXUT框架之前,首先需要初始化DXUT,初始化DXUT可以通過函數DXUTInit()完成。
通常在WinMain()函數中調用DXUTInit()函數進行DXUT初始化工作,如果程序員沒有調用DXUTInit()函數,則DXUT框架會自動使用默認參數調用該函數。
通常在WinMain()函數中調用DXUTInit()函數進行DXUT初始化工作,如果程序員沒有調用DXUTInit()函數,則DXUT框架會自動使用默認參數調用該函數。
DXUT框架剖析(2) 摘要: DXUT框架提供了下列服務,幫助程序員創建一個應用程序:
(1)簡化窗口和設備的創建。
(2)聲明設備事件(創建、重置、丟失、銷毀)和窗口事件(消息、鍵盤、鼠標)。
(3)在窗口模式和全屏模式間切換,在硬件抽象層設備和參考設備間切換。
(4)高分辨率計時器。
(5)為自動測試提供命令行支持。
(6)通過對話框或API選擇設備。
(7)紋理GUI控件組,包括IME-enable文本框。
(8)附加雜類,例如簡單的攝像機類。
(1)簡化窗口和設備的創建。
(2)聲明設備事件(創建、重置、丟失、銷毀)和窗口事件(消息、鍵盤、鼠標)。
(3)在窗口模式和全屏模式間切換,在硬件抽象層設備和參考設備間切換。
(4)高分辨率計時器。
(5)為自動測試提供命令行支持。
(6)通過對話框或API選擇設備。
(7)紋理GUI控件組,包括IME-enable文本框。
(8)附加雜類,例如簡單的攝像機類。
DXUT框架剖析(1) 摘要: DXUT(也稱sample framework)是建立在Direct3D
API之上的Direct3D應用程序框架,有了DXUT這樣一個Direct3D程序框架,只需在這個框架的基礎上編寫相應的代碼,從而簡化了
windows和Direct3D API的使用,可以高效地進行Direct3D程序設計。
posted on 2008-05-19 14:33 lovedday 閱讀(5488) 評論(0) 編輯 收藏 引用 所屬分類: ■ DXUT Research