收藏 分享(赏)

[DirectX开发学习日记]第一个DirectX程序及相关基础概念new.docx

上传人:dreamzhangning 文档编号:2638981 上传时间:2018-09-24 格式:DOCX 页数:8 大小:37.29KB
下载 相关 举报
[DirectX开发学习日记]第一个DirectX程序及相关基础概念new.docx_第1页
第1页 / 共8页
[DirectX开发学习日记]第一个DirectX程序及相关基础概念new.docx_第2页
第2页 / 共8页
[DirectX开发学习日记]第一个DirectX程序及相关基础概念new.docx_第3页
第3页 / 共8页
[DirectX开发学习日记]第一个DirectX程序及相关基础概念new.docx_第4页
第4页 / 共8页
[DirectX开发学习日记]第一个DirectX程序及相关基础概念new.docx_第5页
第5页 / 共8页
点击查看更多>>
资源描述

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

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

3、VICE9 g_pd3dDevice=NULL;/Direct3D 设备对象/-/Desc:初始化 Direct3D/-HRESULT InitD3D(HWND hWnd)/创建 Direct3D 对象,该对象用来创建 Direct3D 设备对象if(NULL=(g_pD3D=Direct3DCreate9(D3D_SDK_VERSION)return E_FAIL;/设置 D3DPRESENT_PARAMETERS 结构,准备创建 Direct3D 设备对象)D3DPRESENT_PARAMETERS d3dpp;/创建 Direct3D 设备对象参数 d3dppZeroMemory(d3d

4、pp.Windowed =TRUE;/窗口还是全屏幕d3dpp.SwapEffect=D3DSWAPEFFECT_DISCARD;/后台缓存复制到前台后,清除后台缓存d3dpp.BackBufferFormat =D3DFMT_UNKNOWN;/后台缓存格式和前台缓存格式相同/创建 Direct3D 设备对象if(FAILED(g_pD3D-CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL ,hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,return S_OK;/-/Desc:释放创建对象/-VOID Cleanu

5、p()/释放 Direct3D 设备对象if (g_pd3dDevice!=NULL)g_pd3dDevice-Release();/对应 COM 计数器会减/释放 Direct3D 对象if (g_pD3D!=NULL)g_pD3D-Release();/对应 COM 计数器会减/-/Desc:渲染图形/-VOID Render()/清空后台缓冲g_pd3dDevice-Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(255,0,0),1.0f,0);/矩形数量;要清空的矩形区域,若值为 NULL,则第一个参数为 0;清空的内容:颜色缓冲区;清空颜色缓冲

6、区后颜色缓冲区的值;颜色深度;模板值if (SUCCEEDED(g_pd3dDevice-BeginScene()/在后台缓冲区绘制图形/结束在后台缓冲区绘制图形g_pd3dDevice-EndScene();/将在后台缓冲区绘制的图形提交到前台缓冲区显示g_pd3dDevice-Present(NULL,NULL,NULL,NULL);/参数说明:复制源的矩形区域指针;复制目标的矩形区域指针;当前窗口指针;最小更新区域指针/-/Desc:消息处理/-LRESULT WINAPI MsgProc(HWND hWnd,UINT msg, WPARAM wParam, LPARAM lParam)

7、switch(msg)case WM_DESTROY:Cleanup();PostQuitMessage(0);return 0;case WM_PAINT:Render();ValidateRect(hWnd,NULL);return 0;return DefWindowProc(hWnd,msg,wParam,lParam);/-/Desc:程序入口/-INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, INT)/注册窗口类WNDCLASSEX wc=sizeof(WNDCLASSEX),CS_CLASSDC, MsgProc,0L,

8、0L,GetModuleHandle(NULL),NULL,NULL,NULL,NULL,L“ClassName“,NULL;RegisterClassEx( /创建窗口HWND hWnd=CreateWindow(L“ClassName“,L“最简单的 Direct3D 程序“,WS_OVERLAPPEDWINDOW,0,0,1024,768,NULL,NULL,wc.hInstance,NULL);/初始化 Direct3Dif (SUCCEEDED(InitD3D(hWnd)/显示主窗口ShowWindow(hWnd,SW_SHOWDEFAULT);UpdateWindow(hWnd);

9、/进入消息循环MSG msg;ZeroMemory(while(msg.message!=WM_QUIT)if(PeekMessage(/消息转换DispatchMessage(/消息传递给窗口过程函数elseRender();/渲染图形,渲染函数一般都是在程序空闲时调用的UnregisterClass(L“ClassName“,wc.hInstance);/参数作用:要注销的类名字符串指针;应用程序句柄return 0;/以上代码定义了一个具有最大,最小化按钮可调整大小的叠置式窗口。/关于 LRESULT/LRESULT Signed result of message processing

10、. /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 casting a pointer to a long to perform pointer arithmetic. /This type is declared in BaseTsd.h as follows:/#if defined(_WIN64)/ typedef _int64 LONG_PTR; /#

11、else/ typedef long LONG_PTR;/#endif通过本章(第二章:Direct3D 程序设计基础)的学习:一、了解了 Direct3D 学习需要的基础知识(1).C+,学好 C+,走便天下都不怕,更何况在 DirectX 中对 C+更是要求很高,微软很多 D3D SDK 中的程序都是用 C+写的。当然,有两种模式,一种是使用COM 模式,另一种是.NET 模式,可以使用 C#和 VB。但是,学好 C+依然是一个很重要的前提。(2).Win32 API 基础包括注册窗口类,消息循环,结束 Windows 程序等,还包括动画的渲染等,都离不开 Win32 API。VB 中有

12、API 么?呵呵,不怕,不怕。当然,VB 中的 API 和 C+中的 API 貌似区别还是很大。(3).组件对象模型基础本书是用 COM 接口方式提供的,希望能找到 C#或 VB.NET 结合 D3D SDK 的书,当然,C+ 没什么不好!(4).数学基础矩阵变换,向量,四元数运算等。计算机图形学中有介绍,不过,蛮难的。要好好学习。基本的概念应该理解,这个是个基础的基础。(5).计算机图形学基础上面已经说到一些。三维变换,照明,光栅化等操作。二、Direct3D 体系结构1.Direct3D 程序开发层次(1).硬件抽象层(HAL)(2).硬件模拟层(HEL,DX8 后已经不存在了)与软件参考层,现今的游戏要么运行于 HAL,要么运行于(REF Layer,Reference Layer)软件参考层上(3).D3D 和 GDI 的关系(并列)2.Direct3D 对象 Direct3D 设备对象的概念和创建3.Direct3D 程序的基本结构(1).创建一个 Windows 窗口(2).初始化 Direct3D,包括创建 Direct3D 对象,Direct3D 设备对象以及要渲染的图形对象(3).消息循环(4).清除初始化时创建的所有 COM 对象,退出程序以上细节及代码细节下次日志分析

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报