下载此文档

directD学习笔记.docx


文档分类:外语学习 | 页数:约35页 举报非法文档有奖
1/35
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/35 下载此文档
文档列表 文档介绍
DirectXSDK2006学****笔记1——框架2008-01-3113:20友情提醒:所谓的框架是指SDK目录下\Samples\C++\Common路径下的DXUT系列函数包装。学****框架的前提是必须有足够的WindowsAPI,GUI编程经验,必须熟悉Windows的消息机制,回调机制,最好有万行左右的C/C++编程经验。MFC在这里没有任何用处。另外我觉得最好在看程序之前对于D3D的所有概念有点了解,什么是vertex,texture,matrix,lighting,mesh等等,以及相关的数学概念。这些都可以在网上找到中文翻译,帮助你快速入门。 DXSDK2006和2003版的比起来更新了不少东西,比如DirectX10,还有ManagedDirectX等等。不过我关心的还是D3D9。除了个别接口的更改之外,DXSDK2006还提供了一套图形控件的类库,它的界面还是很漂亮的:)如图: 学****一个框架还是从它的入口学****比较方便,否则容易迷失在无穷无尽的API和层层包装之中。。首先是2003版的框架中提供了一个CD3DApplication类,这个类对于初始化,清除,以及游戏窗口的创建,游戏主循环进行了包装。这是一个不错的类,不知道为什么在2006版中去掉了。不过不要紧,2006版的框架中提供的一些C包装函数已经足够了。在看这些函数之前,我们还是先来看看SDK目录下\Samples\C++\Direct3D\Tutorials中有些什么吧。Tut01_CreateDevice是创建框架,这个程序不用框架,研究一下有助于了解D3D的大致工作流程。下面是winmain函数中的一部分。   //InitializeDirect3D   if(EEDED(InitD3D(hWnd)))   {       //Showthewindow       ShowWindow(hWnd,SW_SHOWDEFAULT);       UpdateWindow(hWnd);       //Enterthemessageloop       MSGmsg;       while(GetMessage(&msg,NULL,0,0))       {           TranslateMessage(&msg);           DispatchMessage(&msg);       }   } 在消息循环之前有个初始化设备的函数InitD3D(hWnd),其代码如下:HRESULTInitD3D(HWNDhWnd){   if(NULL==(g_pD3D=Direct3DCreate9(D3D_SDK_VERSION)))       returnE_FAIL;   D3DPRESENT_PARAMETERSd3dpp;   ZeroMemory(&d3dpp,sizeof(d3dpp));   =TRUE;   =D3DSWAPEFFECT_DISCARD;   =D3DFMT_UNKNOWN;if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&g_pd3dDevice)))   {       returnE_FAIL;   }   returnS_OK;}主要是调用Direct3DCreate9和g_pD3D->CreateDevice这两个函数。查看DXSDK文档中关于D3DPRESENT_PARAMETERS的定义,大致了解一下。接下来要关心的就是消息循环了,在回调函数MsgProc中处理了两个消息,一个是WM_DESTROY,里面调用了Cleanup函数,另一个是WM_PAINT函数,里面调用了Render函数。Cleanup函数很简单,就是调用D3D对象及其设备对象的Release函数释放资源,而Render函数就是D3D中最重要的函数了。VOIDRender(){   if(NULL==g_pd3dDevice)       return;   //Clearthebackbuffertoabluecolor   g_pd3dDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,255),,0);      //Beginthescene   if(EEDED(g_pd3dDevice->BeginScene()))

directD学习笔记 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数35
  • 收藏数0 收藏
  • 顶次数0
  • 上传人1542605778
  • 文件大小364 KB
  • 时间2020-02-27