Direct3D程序设计基础
- 格式:ppt
- 大小:269.00 KB
- 文档页数:51
3D编程基础知识(OpenGL)一、前言科学计算可视化、计算机动画、虚拟现实是计算机图形学领域内三大活跃的发展方向,它们的技术核心都是三维真实感图形。
而OpenGL就是这三维真实感图形的构造之一。
二、概述1、Direct3D & OpenGLDirect3D是Microsoft的DirectX其中的一个COM组件,目前最新版本是Direct9.0c;OpenGL最初由SGI开发,目前由OpenGL体系结构审核委员会(ARB)所维护。
OpenGL ARB 是个行业协会,负责OpenGL以及相关技术的发展和演变。
OpenGL ARB由下面这些计算机图形行业的领先企业所组成:3Dlabs、Apple、ATI、Dell、IBM、Intel、NVIDIA、SGI和Sun Microsystems。
最新的规范是2.0。
有两套实现,一套是SGI的OpenGL实现,一套是Microsoft 的OpenGL实现。
目前Microsoft的OpenGL只支持1.1规范。
Direct3D:1、适合做游戏开发。
DirectX是非常成熟的游戏开发的组件,辅助的功能库、数学库都很强大和成熟,如D3DX.lib中包含的大量辅助函数,而OpenGL没有这些相关的东西,它只专注于3d的渲染,辅助的东西不得不由第三方提供,或者自己开发...而且DirectX更新比较快。
2、Direct3D是面向对象的COM实现。
OpenGL只是一套面向结构的图形API。
3、OpenGL不支持一些低端显卡。
OpenGL:1、跨平台性。
可应用在Windows、OS/2、Unix、Max等系统上。
2、在光源和纹理的处理上性能比较优秀。
2、OpenGL的发展OpenGL(Open Graphics Library),开放图形程序接口。
1、1992年7月,SGI公司发布OpenGL1.0。
2、1995年,SGI发布OpenGL1.1 。
3、2001年8月,ARB发布OpenGL1.3规范。
1.初始化Direct3D1.Direct3DCreate9 (D3D_SDK_VERSION);获得IDirect3D9接口2.IDirect3D9::GetDeviceCaps()获得主显示设备的性能。
确认硬件顶点性能3.D3DPRESENT_PARAMETERS_ { } 填充一结构用来描述需要创建的IDirect3DDevice9接口的信4.IDirect3D9::CreateDevice( ) 创建IDirect3DDevice9接口第二章绘制流水线5.struct 类型+vertex ()定义顶点结构6.#define FVF_COLOR(| |)描述顶点的组成格式7.Device->SetTransform (D3DTS_WORLD, &worldMatrix);从本地空间向世界空间的变换,:8.D3DXMatrixTranslation ()计算几何物体变换矩阵9.D3DXMATRIX* D3DXMatrixLookAtLH()计算视图空间变换矩阵,,也是观察空间10.Device->SetRenderState (D3DRS_CULLMODE, Value);背面消隐11.D3DXMATRIX* D3DXMatrixPerspectiveFovLH () 根据视域体信息创建投影矩阵12.typedef struct _D3DVIEWPORT9 { } 定义视口结构13.Device->SetViewport ()设置视口大小14.15.第三章在Direct3D中绘制图形16.17.device->CreateVertexBuffer ( ) 创建一个顶点缓冲区18.device->CreateIndexBuffer ( ) 创建一个索引缓冲区:19.Look ()获得指向缓存的指针20.GetDesc (&变量); (变量类型D3DVERTEXBUFFER_DESC)得到顶点缓冲区信息21.GetDesc (&变量); (变量类型D3DINDEXBUFFER_DESC)得到索引缓冲区信息22.HRESULT IDirect3DDevice9::SetRenderState()设置渲染状态,也是绘制23.SetStreamSource () 设置数据流来源,,大意是将顶点缓冲区和数据流挂接到一起24._device->SetFVF(D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1);设置顶点的格式25._device->SetIndices(_ib); //传进来索引缓冲区的指针,设置索引缓冲区的代码26._device->BeginScene(); 开始绘制27.DrawPrimitive ()从顶点缓冲区绘制,,从顶点流中获取顶点信息28.DrawIndexedPrimitive ()从索引缓冲区绘制当前的索引缓冲区中获得索引信息。