DXUT.H / DXUT.CPP 解析

DXUTState类

       成员变量 存储设备和窗口信息

       成员函数 获取和设置成员变量

 

创建实例函数 (创建实例) 不对用户开放DXUT.CPP

       创建DXUTState类的实例

 

内部功能函数(控制窗口设备) 不对用户开放DXUT.CPP

       调用成员函数得到变量后对设备和窗口进行设置

 

内部帮助函数(帮助内部函数) 不对用户开放DXUT.CPP

       返回当前的窗口设备信息给内部功能函数

 

检索函数(给外部调用,只用于读) 对用户开放 DXUT.H / DXUT.CPP

       返回成员变量值给外部用户

 

外部回调函数(使用外部用户自定义的函数) 对用户开放DXUT.H / DXUT.CPP

       获得外部用户函数指针

 

初始化函数(外部用户调用初始化窗体设备) 对用户开放DXUT.H/ DXUT.CPP

       初始化DXUTState类 并创建窗体设备

 

常见的任务函数(外部用户调用) 对用户开放DXUT.H/ DXUT.CPP

       对窗口和设备进行设置



一下是一些对用户开放函数的解释

// Initialization
//--------------------------------------------------------------------------------------
HRESULT WINAPI DXUTInit( bool bParseCommandLine = true,
                        bool bShowMsgBoxOnError = true,
                        __in_opt WCHAR* strExtraCommandLineParams = NULL,
                        bool bThreadSafeDXUT = false );//初始化DXUT

// Choose either DXUTCreateWindow or DXUTSetWindow.  If using DXUTSetWindow, consider using DXUTStaticWndProc
HRESULT WINAPI DXUTCreateWindow( const WCHAR* strWindowTitle = L"Direct3D Window",
                                HINSTANCE hInstance = NULL, HICON hIcon = NULL, HMENU hMenu = NULL,
                                int x = CW_USEDEFAULT, int y = CW_USEDEFAULT );//创建窗口
HRESULT WINAPI DXUTSetWindow( HWND hWndFocus, HWND hWndDeviceFullScreen, HWND hWndDeviceWindowed, bool bHandleMessages = true );
LRESULT CALLBACK DXUTStaticWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );

// Choose either DXUTCreateDevice or DXUTSetD3D*Device or DXUTCreateD3DDeviceFromSettings
HRESULT WINAPI DXUTCreateDevice( bool bWindowed = true, int nSuggestedWidth = 0, int nSuggestedHeight = 0 );//创建设备
HRESULT WINAPI DXUTCreateDeviceFromSettings( DXUTDeviceSettings* pDeviceSettings, bool bPreserveInput = false, bool bClipWindowToSingleAdapter = true );//DXUTGetDeviceSettings()得到设备内容的结构体, 后改变结构体内容, 后调用 DXUTCreateDeviceFromSettings 对设备进行更新
HRESULT WINAPI DXUTSetD3D9Device( IDirect3DDevice9* pd3dDevice );
HRESULT WINAPI DXUTSetD3D10Device( ID3D10Device* pd3dDevice, IDXGISwapChain* pSwapChain );

// Choose either DXUTMainLoop or implement your own main loop
HRESULT WINAPI DXUTMainLoop( HACCEL hAccel = NULL );//消息循环函数

// If not using DXUTMainLoop consider using DXUTRender3DEnvironment
void WINAPI DXUTRender3DEnvironment();

// Common Tasks

HRESULT WINAPI DXUTToggleFullScreen();//使应用程序在窗口模式和全屏模式间切换

HRESULT WINAPI DXUTToggleREF();//使应用程序在硬件抽象层和参考设备间切换
HRESULT WINAPI DXUTToggleWARP();
void    WINAPI DXUTPause( bool bPauseTime, bool bPauseRendering );//将框架的内部计数器和(或)渲染过程设为暂停状态
void    WINAPI DXUTSetConstantFrameTime( bool bConstantFrameTime, float fTimePerFrame = 0.0333f );//启用或禁用固定帧时间
void    WINAPI DXUTSetCursorSettings( bool bShowCursorWhenFullScreen = false, bool bClipCursorWhenFullScreen = false );//为全屏模式下光标的用法设置选项
void    WINAPI DXUTSetD3DVersionSupport( bool bAppCanUseD3D9 = true, bool bAppCanUseD3D10 = true );
void    WINAPI DXUTSetHotkeyHandling( bool bAltEnterToToggleFullscreen = true, bool bEscapeToQuit = true, bool bPauseToToggleTimePause = true );
void    WINAPI DXUTSetMultimonSettings( bool bAutoChangeAdapter = true );//为框架如何在多显示器配置中工作设置选项
void    WINAPI DXUTSetShortcutKeySettings( bool bAllowWhenFullscreen = false, bool bAllowWhenWindowed = true ); // Controls the Windows key, and accessibility shortcut keys
void    WINAPI DXUTSetWindowSettings( bool bCallDefWindowProc = true );//窗口是否处理默认的窗口消息
HRESULT WINAPI DXUTSetTimer( LPDXUTCALLBACKTIMER pCallbackTimer, float fTimeoutInSecs = 1.0f, UINT* pnIDEvent = NULL, void* pCallbackUserContext = NULL );//添加一个新的计时器
HRESULT WINAPI DXUTKillTimer( UINT nIDEvent );     //卸载一个已有的计时器
void    WINAPI DXUTResetFrameworkState();//将框架状态重置为初始默认状态,之前设置的框架状态改变将失效。
void    WINAPI DXUTShutdown( int nExitCode = 0 );//触发程序终止和清空框架

void    WINAPI DXUTSetIsInGammaCorrectMode( bool bGammaCorrect );//设置灰度系数模式


// Direct3D 9

IDirect3D9*              WINAPI DXUTGetD3D9Object(); // Does not addref unlike typical Get* APIs
IDirect3DDevice9*        WINAPI DXUTGetD3D9Device(); // Does not addref unlike typical Get* APIs//获取一个指向代表当前设备的IDirect3DDevice9接口指针
D3DPRESENT_PARAMETERS    WINAPI DXUTGetD3D9PresentParameters();
const D3DSURFACE_DESC*   WINAPI DXUTGetD3D9BackBufferSurfaceDesc();//获取一个指向当前设备后台缓冲区表面的D3DSURFACE_DESC结构体的指针
const D3DCAPS9*          WINAPI DXUTGetD3D9DeviceCaps();//获取一个指向当前设备的D3DCAPS9结构体的指针
HRESULT                  WINAPI DXUTGetD3D9DeviceCaps( DXUTDeviceSettings* pDeviceSettings, D3DCAPS9* pCaps );//获得设备信息
bool                     WINAPI DXUTDoesAppSupportD3D9();//该应用程序是否支持D3D9
bool                     WINAPI DXUTIsAppRenderingWithD3D9();//是否用D3D9进行渲染

// Direct3D 10
bool                     WINAPI DXUTIsD3D10Available(); // If D3D10 APIs are availible
IDXGIFactory*            WINAPI DXUTGetDXGIFactory(); // Does not addref unlike typical Get* APIs
ID3D10Device*            WINAPI DXUTGetD3D10Device(); // Does not addref unlike typical Get* APIs
ID3D10Device1*           WINAPI DXUTGetD3D10Device1(); // Does not addref unlike typical Get* APIs
IDXGISwapChain*          WINAPI DXUTGetDXGISwapChain(); // Does not addref unlike typical Get* APIs
ID3D10RenderTargetView*  WINAPI DXUTGetD3D10RenderTargetView(); // Does not addref unlike typical Get* APIs
ID3D10DepthStencilView*  WINAPI DXUTGetD3D10DepthStencilView(); // Does not addref unlike typical Get* APIs
const DXGI_SURFACE_DESC* WINAPI DXUTGetDXGIBackBufferSurfaceDesc();
bool                     WINAPI DXUTDoesAppSupportD3D10();
bool                     WINAPI DXUTIsAppRenderingWithD3D10();


// General
DXUTDeviceSettings WINAPI DXUTGetDeviceSettings(); //DXUTGetDeviceSettings()得到设备内容的结构体, 后改变结构体内容, 后调用 DXUTCreateDeviceFromSettings 对设备进行更新
HINSTANCE WINAPI DXUTGetHINSTANCE();// 获取应用程序实例的句柄
HWND      WINAPI DXUTGetHWND(); //获取当前设备窗口的句柄
HWND      WINAPI DXUTGetHWNDFocus();//获取当前获得焦点的窗口的句柄
HWND      WINAPI DXUTGetHWNDDeviceFullScreen();//获取全屏模式设备窗口的句柄
HWND      WINAPI DXUTGetHWNDDeviceWindowed();//获取窗口模式设备窗口的句柄
RECT      WINAPI DXUTGetWindowClientRect(); // 获取窗口客户区的范围
LONG      WINAPI DXUTGetWindowWidth(); //获取窗口的宽
LONG      WINAPI DXUTGetWindowHeight(); // 获取窗口的高
RECT      WINAPI DXUTGetWindowClientRectAtModeChange(); // Useful for returning to windowed mode with the same resolution as before toggle to full screen mode
RECT      WINAPI DXUTGetFullsceenClientRectAtModeChange(); // Useful for returning to full screen mode with the same resolution as before toggle to windowed mode
double    WINAPI DXUTGetTime();//获取程序运行时间
float     WINAPI DXUTGetElapsedTime();// 获取从上一帧到当前帧所经过的时间
bool      WINAPI DXUTIsWindowed();// 检查应用程序是否处在窗口模式下
bool      WINAPI DXUTIsInGammaCorrectMode();// 检查是否为灰度系数模式
float     WINAPI DXUTGetFPS();//获取当前每秒提交的帧数
LPCWSTR   WINAPI DXUTGetWindowTitle();//获取指向应用程序窗口标题的指针
LPCWSTR   WINAPI DXUTGetFrameStats( bool bIncludeFPS = false );//获取一个指向字符串的指针,该字符串包括每秒帧数、分辨率、后台缓冲区格式、深度缓冲区格式。
LPCWSTR   WINAPI DXUTGetDeviceStats();//获取一个指向字符串的指针,该字符串包括当前设备类型、顶点运算行为和设备名。
LPCWSTR   WINAPI DXUTGetD3D10CounterStats();
bool      WINAPI DXUTIsVsyncEnabled();//检查是否帧同步
bool      WINAPI DXUTIsRenderingPaused();//检查当前设备的渲染状态是否处在暂停状态
bool      WINAPI DXUTIsTimePaused();//检查当前设备的计时器是否处在暂停状态
bool      WINAPI DXUTIsActive();//DXUT对象是否活动
int       WINAPI DXUTGetExitCode();//获取框架的退出代码
bool      WINAPI DXUTGetShowMsgBoxOnError();
bool      WINAPI DXUTGetAutomation();  // Returns true if -automation parameter is used to launch the app
bool      WINAPI DXUTIsKeyDown( BYTE vKey ); // Pass a virtual-key code, ex. VK_F1, 'A', VK_RETURN, VK_LSHIFT, etc//检查当该函数调用时,键盘上指定的某个键是否按下。
bool      WINAPI DXUTWasKeyPressed( BYTE vKey );  // Like DXUTIsKeyDown() but return true only if the key was just pressed//检查当该函数调用时,是否有按键按下。
bool      WINAPI DXUTIsMouseButtonDown( BYTE vButton ); // Pass a virtual-key code: VK_LBUTTON, VK_RBUTTON, VK_MBUTTON, VK_XBUTTON1, VK_XBUTTON2//检查当该函数调用时,指定的鼠标键是否按下。
HRESULT   WINAPI DXUTCreateState(); // Optional method to create DXUT's memory.  If its not called by the application it will be automatically called when needed
void      WINAPI DXUTDestroyState(); // Optional method to destroy DXUT's memory.  If its not called by the application it will be automatically called after the application exits WinMain




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值