directx9.0是什么意思


directx9.0是什么意思


DirectX是微软在Windows操作系统上对编写高性能的多媒体应用程序而提供的一整套API.它使得我们不需要考虑具体的硬件就可以编写出实用的软件,也可以利用硬件加速功能.与DirectX竞争的技术是OpenGL. DirectX 9.0的 9.0是他的版本号而已 DirectX是Microsoft公司开发的运行于计算机平台的多媒体控制处理引擎; 能够对显存和硬件直接访问; 图形应用程序接口(API); DirectX通过COM的技术,以及一套由Microsoft和硬件厂商共同编写的驱动程序和程序库,可以提供对所有设备的硬件级的控制. DirectX的组成 显示部分 声音部分 输入部分 网络部分 显示部分 Direct Draw:负责2D加速(DirectX8.0以上的版本不包含此项) Direct 3D:负责3D加速 声音部分 DirectAudio:由DirectSound和DirectMusic整合而成; DirectSound:只支持数字化的声音,不支持MIDI. DirectMusic:支持MIDI,是一种基于DLS(Downloadable Sound)数据的实时音乐编排和回放技术; DirectShow :提供了在windows平台上对多媒体数据流的高质量的捕捉和回放的支持; DirectShow支持多种多媒体格式,包括AVI,MP3,WAV等; 输入部分 Direct Input :提供了对游戏输入设备的支持,包括键盘,鼠标,手柄等; 支持力反馈设备,模拟使用者的真实感觉. 网络部分 DirectPlay:提供了玩家进行多人游戏中信息通讯和玩家互动交流的平台环境; 提供多种连接方式如TCP/IP,IPX,Modem,串口等,使计算机之间互联无障碍; COM 简述 COM是组件对象模型(Component Object Model)的简写.它是一种协议,用来实现软件模块间的二进制连接.当这种连接建立后,两个模块之间就可以通过称为"接口(Interface)"的机制来通信. COM给开发人员提供的是一种开发与语言无关的组件库的方法. COM的发布形式是:以win32动态链接库(DLL)或者可执行文件(EXE)的形式发布的可执行代码组成. DirectX和COM的协同工作 COM在装载DirectX的运行版本时,作为DLL包含在系统中. 运行DirectX时,其装载DLL.请求接口,这些接口的方法就被调入而完成任务. 应包含一些封装了COM内容的输入库函数.LIB,以便于使用这些封装函数调用DirectX来创建COM对象. 访问COM对象 调用适当的函数获取接口指针; 调用接口的方法(成员函数)来完成所需功能; 用完接口后,调用Release方法进行"释放",注意释放顺序应该和获取它们的顺序相反. 游戏的图形实现—Direct3D Direct3D程序的基本结构 创建一个windows窗口 初始化Direct3D程序 处理消息循环 物体图形显示 结束Direct3D程序 窗口的构建 创建一个Windows类. 创建一个事件句柄或WinProc. 用Windows注册Windows类. 用前面创建的Windows类创建一个窗口. 初始化Direct3D程序 创建Direct3D对象并得到Direct3D接口. 查询显卡的显示模式. 创建Direct3D 设备对象并得到接口. 处理消息循环 PeekMessage() TranslateMessage() DispatchMessage() 结束Direct3D程序 窗口过程函数接收到WM_DESTROY消息; 调用函数释放Direct3D资源; 注销wndclass类; Release() 图形显示原理—页翻动技术 把要显示的物体全部绘制到"后缓冲区"; 快速的把它翻动到可见的"前缓冲区" ; 快速而连续的重复此过程; Direct3D的图元 点列 线带 线列 三角形列 三角形带 三角扇形 矩形的创建 坐标变换 世界变换 视图变换 投影变换 图形显示过程 球体的构建 将球体切割成nRings * nSegments 段.需要((m_nRings + 1) * (m_nSegments + 1))个顶点 . 按照立体几何里面球体的构造式,构造出一系列纵向的环和一系列横向的环,这样相互交叉,就构成了一个球体所需要的全部顶点. 球体的立体构成 构成球体的构成以三角形网格为图元形成的; 真正构成的球体如右图; 三角形个数足够多,三角形之间的交界处显得比较平滑,近似于一个圆面了. 索引顶点 顶点缓存中保存A,B,C,D这4个顶点的FVF数据项,相应的索引为0,1,2,3. 按照三角形列的组成顺序,把顶点索引值存入索引缓存区. 通过调用索引调用顶点. 深度缓冲机理 DirectX测试对象在屏幕上的像素点到摄像机的远近,并把得出的值保存在深度缓冲区中; 以同样的方法测试同一位置上另一对象的像素点; 将两像素比较.若后者距离近,则刷新纪录;否则不理睬; 灯光 点光源 (电灯泡) 方向光 (太阳) 聚光灯 (手电筒) 计算量:按从小到大排序,依次为:环境光,平行光,点光源,聚光灯 光源属性 光的类型:Type 光源的颜色:Diffuse, Ambient,Specular 光源位置:Position 光的方向:Direction 光的范围:Range 光的内外锥形衰退:Falloff 光的距离衰减系数: Attenuation0,Attenuation1,Attenuation2 聚光灯内部锥形角度:Theta 聚光灯外部锥形角度: Phi 物体表面的材质属性 环境光反射系数:Ambient 漫反射系数:Diffuse 镜面反射系数:Specular 自身发光度:Emissive 镜面反射数:Power 加上纹理 纹理属于COM对象,既可以从现有的图片文件中直接创建,也可以先创建一个空的纹理对象,然后再进行填充. 纹理是表示物体表面细节的一幅或几幅2D图片,它可以保存为bmp,tga,jpg等图片格式 . Direct3D支持多层纹理,最高可达8层. 图片的大小一般是任意的,但是为了计算方便,一般取2n大小 . 添加纹理的过程 从磁盘文件中创建纹理并载入内存 D3DXCreateTextureFromFile() 设置纹理IDirect3DDevice8::SetTexture() 设置纹理渲染状态(纹理混合)IDirect3DDevice8::SetTextureStageState() 纹理坐标 不论纹理的大小如何,其左上角总是(0,0),右下角总是(1,1),易知中心点的纹理坐标为(0.5,0.5). 但Direct3D也允许纹理坐标取此范围之外的值,以获取某些特殊的纹理效果 纹理过滤 纹理过滤方法 最近点采样过滤 线性纹理过滤 各项异性纹理过滤 多级渐进纹理过滤 最近点采样过滤原理 Direct3D计算的纹理元素地址是一个浮点值; 纹理下标值为整数值; Direct3D复制最接近的整数地址的纹理元素颜色 ; 纹理混合 当使用纹理时,实体的外观由纹理图片和材质经过某种计算获得. 参考资料:

猜你喜欢