第一个DirectX程序及相关基础概念_第1页
第一个DirectX程序及相关基础概念_第2页
第一个DirectX程序及相关基础概念_第3页
第一个DirectX程序及相关基础概念_第4页
第一个DirectX程序及相关基础概念_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、作者 tag:directx 编程 游戏开发 directx 学习 directx3d 对象 CSDN 推荐 tag:c# c+ Win32api api对象pd缓冲区指针图形矩形渲染区域上一篇:DirectX开发学习日记第一个DirectX窗口程序细节一(03)|下一篇:DirectX开发学习日记DirectX9.0+VS.NET2005学习初步一(01)配置原DirectX开发学习日记第一个DirectX程序及相关基础概念一(02) 点/ e花了一天的时间,终于看懂了部分代码,不容易。虽然有光盘,但还是全部在VS2005中手写了所有代码,书中的例子貌似大部分照搬 了 DirectX SDK

2、 Sample里的很多Samples,当然,个人觉得写的不错,也是逛书 城后选中的三本三维开发书之一,挑的累哦,自己基础太差了,还有两本是:游戏开 发-剧本与角色创造和计算机图形学(书为:精通DirectX 3D图形动画程序设 计/人民邮电出版社,ISBN:978-7-115-15971-7/TP)全部源代码如下(部分注释是我看书后自己加的):/=最简单的Direct3D程序/=#include /全局变量/LPDIRECT3D9 g_pD3D =NULL;/Direct3D 对象/g_pD3D 是 Direct3D 接口指针LPDIRECT3DDEVICE9 g_pd3dDevice=NUL

3、L;/Direct3D 设备对象/Desc:初始化 Direct3D/HRESULT InitD3D(HWND hWnd)日国I /创建Direct3D对象,该对象用来创建Direct3D设备对象I if(NULL= = (g_pD3D=Direct3DCreate9(D3D_SDK_VERSION)I return E_FAIL;I /设置D3DPRESENT_PARAMETERS结构,准备创建Direct3D设备对象)I D3DPRESENT_PARAMETERS d3dpp;/创建 Direct3D 设备对象参数 d3dpp| ZeroMemory(&d3dpp,sizeof(d3dpp

4、);I d3dpp.Windowed =TRUE; 窗口还是全屏幕I d3dpp.SwapEffect=D3DSWAPEFFECT_DISCARD; 后台缓存复制到前台后,清除后台缓存I d3dpp.BackBufferFormat =D3DFMT_UNKNOWN;/ 后台缓存格式和前台缓存格式相同I| /创建Direct3D设备对象I if(FAILED(g_pD3D-CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL ,hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&g_ pd3dDevice)I

5、参数说明,按顺序:Adapter指定显卡序号,默认显卡,指定设备类型(HAL,硬件抽象层设备),窗口指针,软件运算方式)拇| return E_FAIL;return S_OK;/Desc:释放创建对象/VOID Cleanup()日田/释放Direct3D设备对象I if (g_pd3dDevice! = NULL)g_pd3dDevice-Release();/对应 COM 计数器会减1I /释放Direct3D对象I if (g_pD3D! = NULL)g_pD3D-Release();/对应 COM 计数器会减1/Desc:渲染图形/VOID Render()日田清空后台缓冲|g_p

6、d3dDevice-Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(25 5,0,0),1.0f,0);矩形数量;要清空的矩形区域,若值为NULL,则第一个参数为0;清空的内容:颜色缓冲区;清空颜色缓冲区后颜色缓冲区的值;颜色深度;模板值I if (SUCCEEDED(g_pd3dDevice-BeginScene()拇在后台缓冲区绘制图形结束在后台缓冲区绘制图形g_pd3dDevice-EndScene();将在后台缓冲区绘制的图形提交到前台缓冲区显示| g_pd3dDevice-Present(NULL,NULL,NULL,NULL);参数说明:复制源

7、的矩形区域指针;复制目标的矩形区域指针;当前窗口指针;最 小更新区域指针/Desc:消息处理/LRESULT WINAPI MsgProc(HWND hWnd,UINT msg, WPARAM wParam, LPARAM lParam)日田I switch(msg)拇| case WM_DESTROY:I Cleanup();I PostQuitMessage(0);I return 0;I case WM_PAINT:I Render();I ValidateRect(hWnd,NULL);I return 0;I return DefWindowProc(hWnd,msg,wParam,

8、lParam);/Desc:程序入口/INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, INT)日田注册窗口类翰 WNDCLASSEX wc=sizeof(WNDCLASSEX),CS_CLASSDC, MsgProc,0L,0L,GetModuleHandle(NULL),NULL,NULL,NULL,NULL,LClassName,NULL;I RegisterClassEx( &wc);创建窗口HWND hWnd = CreateWindow(LClassName”,L”最简单的 Direct3D 程序,WS_OVERLAPPED

9、WINDOW,0,0,1024,768,NULL,NULL,wc.hInstance,NULL);I初始化Direct3Dif (SUCCEEDED(InitD3D(hWnd)拇I显示主窗口I ShowWindow(hWnd,SW_SHOWDEFAULT);I UpdateWindow(hWnd);II进入消息循环I MSG msg;I ZeroMemory(&msg,sizeof(msg);while(msg.message!=WM_QUIT)自审I if(PeekMessage(&msg,NULL,0U,0U,PM_REMOVE)/PeekMessage 和 GetMessage的区另UI

10、 /PeekMessage过程中用来处理Render而GetMessage过门不入,不会抢系统控制权拇I TranslateMessage(&msg); 消息转换I DispatchMessage(&msg); 消息传递给窗口过程函数I else自审I Render。; 渲染图形,渲染函数一般都是在程序空闲时调用的UnregisterClass(LClassName”,wc.hInstance);/参数作用:要注销的类名字符串指针;应用程序句柄I return 0;以上代码定义了一个具有最大,最小化按钮可调整大小的叠置式窗口。/关于 LRESULT/LRESULT Signed result

11、of message processing./This type is declared in WinDef.h as follows:/typedef LONG_PTR LRESULT;/关于 LONG_PTR/LONG_PTR Signed long type for pointer precision. Use when castin g a pointer to a long to perform pointer arithmetic./This type is declared in BaseTsd.h as follows:/#if defined(_WIN64)/ typedef

12、 _int64 LONG_PTR;/#else/ typedef long LONG_PTR;/#endif通过本章(第二章:Direct3D程序设计基础)的学习:一、了解了 Direct3D学习需要的基础知识.C+ + ,学好C+ +,走便天下都不怕,更何况在DirectX中对C+更是要求很高,微软很多D3D SDK中的程序都是用C+ +写的。当然,有两种模式,一种是使用COM 模式,另一种是.NET模式,可以使用C#和VB。但是,学好C+依然是一个很重要 的前提。.Win32 API 基础包括注册窗口类,消息循环,结束Windows程序等,还包括动画的渲染等,都离不开 Win32 API。VB中有API么?呵呵,不怕,不怕。当然,VB中的API和C+ +中的 API貌似区别还是很大。.组件对象模型基础本书是用COM接口方式提供的,希望能找到C#或VB.NET结合D3D SDK的书,当 然,C+没什么不好!.数学基础矩阵变换,向量,四元数运算等。计算机图形学中有介绍,不过,蛮难的。要好好 学习。基本的概念应该理解,这个是个基础的基础。.计算机图形学基础上面已经说到一些。三维变换,照明,光栅化等操作。二、Direct3D体系结构Direct3D程序开发层次.硬件抽象层(HAL).硬件模拟层(HEL, DX8后已经不存在了)与软件参考层,现今的游戏要么运行于HAL,要么

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论