DIRECTX模型拾取(C#附源码)
- 格式:pdf
- 大小:197.71 KB
- 文档页数:13
DirectX 9.0c 64位简介DirectX是一个由微软公司开发的多媒体和游戏编程接口。
它是为Windows操作系统设计的,提供了访问硬件设备的功能,例如图形和音频设备。
DirectX的不同版本逐渐演变,每个版本都带来了新功能和改进。
本文将重点介绍DirectX 9.0c 64位版本的特性和使用。
DirectX 9.0c简介DirectX 9.0c是DirectX 9的一个升级版本,它于2004年发布。
它是DirectX 9.0系列的最后一个版本,也是支持Windows XP的最后一个主要版本。
DirectX 9.0c主要针对游戏和多媒体应用程序提供了一系列的API,以帮助开发者更好地利用硬件加速功能。
主要特性•高性能图形渲染: DirectX 9.0c引入了Pixel Shader2.0和Vertex Shader 2.0,这些新的着色器模型可以显著提高图形效果和性能。
开发者可以使用这些着色器模型创建复杂的光照、阴影和特效。
•支持更多纹理格式: DirectX 9.0c增加了对多种纹理格式的支持,包括压缩纹理、立方体纹理等。
这些新的纹理格式使开发者可以实现更高质量的纹理效果。
•改进的音频系统: DirectX 9.0c加强了音频处理能力,提供更好的音频效果和立体声支持。
开发者可以利用DirectSound API来创建更逼真的音频效果。
•强大的输入设备支持: DirectX 9.0c引入了DirectInput 8.0,它可以提供对各种输入设备的支持,包括键盘、鼠标、游戏手柄等。
DirectX 9.0c 64位版的优势在64位操作系统上使用64位版本的应用程序可以带来许多优势。
同样,DirectX 9.0c 64位版相对于32位版本也具有一些优势。
更大的内存寻址空间64位版本的DirectX 9.0c可以使用更大的内存地址空间,这使得应用程序可以处理更多的纹理、模型和其他资源。
这对于需要处理大型场景或高分辨率纹理的游戏和应用程序尤为重要。
第13章DirectX编程入门DirectX是微软公司为编写游戏和其他高性能多媒体应用程序而开发的一组高级的Windows低层API,它包含了对图(图形、视频和三维动画)、声音(声效与音乐)、输入设备和网络游戏等的支持。
本章先概述DirectX的基本内容,然后介绍DirectX的主要组件Direct3D和DirectSound的基本编程方法,并给出若干具体编程实例。
13.1 DirectX概述本节简单介绍DurectX的发展历史、版本和功能的演化、结构和模块划分。
DurectX是Windows的一种多媒体API,它在保持设备无关性的同时,可以让应用程序直接控制多媒体设备,从而能充分利用硬件的功能,因此可获得最高的性能。
DurectX自从推出以来,就始终处在快速发展的过程之中。
它已经经历了多个版本,其模块和功能也一直在不断地增加和完善。
DirectX是一种基于COM的系统,主要由硬件抽象层HAL和硬件模拟层HEL所构成。
DurectX被分成若干个组件模块,涵盖了多媒体应用的方方面面。
而且这些组件的数目、名称和功能,也是随着其版本的演化而有所增减、改变和加强。
13.1.1 历史微软公司于1990年5月推出的Windows 3.0大获成功,它是一种与设备无关的具有图形用户界面(GUI)的操作系统。
后来又于1992年3月推出Windows 3.1,提供了对多媒体的支持。
不过Windows的与设备无关的设计思想,虽然使得Windows向程序员提供了一个独立于硬件的软件开发优秀平台,但它不让应用程序直接操作显卡和声卡等多媒体硬件,这样就降低了多媒体应用程序(特别是计算机游戏)的运行效率,例如限制了动画的帧率、不提供混音功能等。
所以当时的Windows并不是一个可以开发和运行高效多媒体程序(如3D游戏)的理想环境,逼迫PC游戏开发商只好绕开Windows而仍旧开发DOS下的游戏。
为了改变这种难堪的局面,促使游戏界放弃DOS而使用Windows,微软需要在设备无关性与高性能之间取得某种平衡,决定为Windows添加一种高性能的动画机制(以及后来的输入与音响等),因此于1995年推出了Game SDK,后来改名为DirectX。
基于DirectX(SDK)的Visual C++游戏设计作者:周杰,江汉大学数学与计算机科学学院指导老师:常君明,江汉大学摘要电脑游戏经过短短30年的发展,已经成为影响公众生活,改变公众娱乐方式的重要产业。
过去,人们主要是借助电影、电视、音乐等方式来娱乐。
而今天,以游戏为代表的电子娱乐正在成为主流娱乐方式。
游戏也正在迅速成长为一个庞大的产业。
Microsoft Direct X(SDK)是一个基于COM技术的多媒体应用程序开发工具包,它代表了未来多媒体应用程序的开发方向。
本文详细介绍了游戏设计基本概念和Direct X 的构架,包括DirectDraw、Direct 3D、DirectSound,并在Visual C++6.0环境下使用Direct X(SDK)开发多媒体游戏作为本论文的实例。
关键字Direct X;游戏设计;Visual C+ +Visual C++ Game Design Based On DirectX(SDK)Jianghan UniversityStudent Jie Zhou Advisor Prof. Junming ChangAbstractAfter the short 30 years' development, the computer games already became an important industry which influences the public life and changes the public entertainment way. In the past, people mainly rely on film, television, music and other means of entertainment. Today, with electronic games for entertainment is becoming a mainstream representative entertainment. Games are rapidly growing into a huge industry. Microsoft Direct X is a multimedia application development SDK (Software Development Kit) based on COM technology. It represents the future of multimedia application development. This paper introduces Game Design in detail and architecture of Direct X, including DirectDraw,Direct3D,DirectSound.Then it describes how to develop multimedia games with Direct X in Visual C++ 6.0 environments.KeywordsDirect X;Game Design;Visual C+ +绪论随着个人电脑以及Internet的普及,游戏业迎来了蓬勃发展的时代。
电脑WinXP系统装不上DirectX9.0c的解决办法推荐文章电脑WinXP无法创建视频预览的解决办法热度:电脑WinXP提示无法定位程序输入点于动态链接库上的解决办法热度:电脑WinXP 系统打不开CHM文件的快速解决办法热度:合肥市测绘管理暂行办法热度:合肥市城市地下管线管理办法热度:随着人类社会的日益进步以及计算机网络技术的不断发展,网络生活与人类日常生活之间的关系越来越密切。
下面是店铺为大家整理的关于电脑WinXP系统装不上DirectX9.0c的解决办法,一起来看看吧!电脑WinXP系统装不上DirectX9.0c的解决办法用户在WindowsXP系统中安装DirectX9.0c时速度非常快,不到2秒钟就完了,随后就出现完成对话框。
而通过在“开始”菜单→“运行”栏中输入“dxdiag”调出DirectX诊断程序进行检测,也证实了我的猜测——当前的DirectX版本仍为9.0b,9.0c并未安装成功。
操作步骤经过反复试验,确定了在Win98下DX9.0b是完全可以正常升级为9.0c的,也就肯定了是由于这版XP造成了这个故障,难道就为了一个游戏再重新更换一套操作系统吗?当然不用,由于DirectX9.0c的安装包里有两个程序(dsetup32.dll和dsetup.dll)负责在每次安装前检测系统的DX版本,如果与自己的版本相同或更高就不继续安装,但不知为何它无法正确检测这版WinXP的DX版本,所以才出现了图1的画面。
而我也就将计就计地骗了XP一下,将DirectX9.0c中的这两个文件替换为9.0b的,这样安装程序就能正常检测安装了。
改造过的DX9.0c安装程序终于不负众望,成功在VLK版WindowsXP上安装上了DirectX9.0c,最后用Dxdiag的检查结果也如图5所示正确地标识为9.0c了。
深入理解OpenGL拾取模式(OpenGL Picking)在用OpenGL进行图形编程的时候,通常要用鼠标进行交互操作,比如用鼠标点选择画面中的物体,我们称之为拾取(Picking),在网上看了很多OpenGL拾取的文章,但大多是只是介绍在OpenGL中如何拾取,如何利用OpenGL提供的一系列函数来完成拾取,最多再简单介绍下OpenGL的名字栈(Name stack),拾取矩阵(Picking Matrix)等等,但是拾取真正的原理确没有提到。
所以,我在这里为大家详细介绍下OpenGL中拾取是怎样实现的,以及其背后的真正原理。
OpenGL中的拾取是对OpenGL图形管线的一个应用。
所以OpenGL中的拾取并不是像D3D一样采用射线交叉测试来判断是否选中一个目标,而是在图形管线的投影变换(Projection Transformation)阶段利用拾取矩阵来实现的。
为了理解这个过程,先来复习一下OpenGL的图形管线。
总的来说,OpenGL图形管线大体分为上面的五个阶段。
在编程的时候使用glMatrixMode(GL_MODELVIEW),或者glMatrixMode(GL_PROJECTION)就是告诉OpenGL 我们是要在那个阶段进行操作。
先来看看投影变换,因为理解投影变换是理解OpenGL拾取的前提条件。
为了简单起见,这里以正交投影(Orthogonal Projection)为例。
在OpenGL中,使用正交投影可以调用glOrtho (left, right, bottom, top, zNear, zFar),其中的六个参数分别对应正交投影视体的六个平面到观察坐标系原点的距离。
一旦在程序中调用了这个函数,OpenGL会马上创建根据给定的六个参数创建一个视体,并且把视体的大小归一化到-1到1之间,也就是说,OpenGL会自动把你给的参数所对应的x,y,z值转换为-1到1之间的值,并且这个视体的中心就是观察坐标系的原点。
1网络游戏开发—DirectX函数归纳总结23003李翔李森2DirectX目录1.D3D 基本框架 (1)创建D3D 对象 (2)获取显卡显示模式 (2)创建D3D 设备接口 (2)开始渲染和结束渲染 (2)清空图形绘制区 (2)屏幕反转 (2)2.绘制基本图形 (1)绘制基本图形 (4)灵活定点格式(FVF) (2)基本图元的绘制 (2)创建顶点缓冲区 (2)基本图元的绘制 (2)保存顶点 (2)设置渲染状态 (2)图形绘制 (2)索引缓冲 (4)顶点设置 (2)创建索引缓冲区 (2)保存顶点索引值 (2)索引图形绘制 (2)D3D 中的图形学 (4)D3D 中的向量 (2)D3D 中的矩阵 (2)D3D 中的平面 (2)3D3D 中的射线 (2)D3D 中的图形变换 (2)3.纹理 (4)从磁盘文件获取纹理 (2)设置当前要渲染的纹理 (2)设置纹理的渲染状态 (2)设置纹理采样属性 (2)从一张纹理图形中生成多级纹理 (2)包装纹理寻址 (2)镜像纹理寻址 (2)夹取纹理寻址 (2)边框颜色纹理寻址 (2)一次镜像纹理寻址 (2)纹理包装 (2)4.光照 (4)D3D 光照的基本实现 (4)顶点格式 (2)设置物体材质 (2)添加光源 (2)激活光照运算 (2)5.摄像机 (4)生成视图变换矩阵 (2)生成投影变换矩阵 (2)6.模型基础 (4)ID3DXMesh 接口基础 (2)ID3DXMesh 接口相关 (2)应用.X 文件 (2)7.游戏中的基本特效 (4)4检查硬件支持的深度缓冲区格式 (2)激活深度测试 (2)设置深度缓冲区更新 (2)设置深度测试函数 (2)激活Alpha 混合 (2)设置Alpha 混合计算方式 (2)设置Alpha 混合系数 (2)激活Alpha 测试 (2)设置Alpha 测试参考值 (2)设置Alpha 测试函数 (2)多边形填充模式 (2)查询设备是否支持多重采样 (2)启用多重采样的全景图形反锯齿 (2)设置多纹理混合方式 (2)激活雾化 (2)设置雾化计算方式 (2)设置雾的颜色 (2)设置雾的起始范围 (2)指数雾化浓度 (2)基于发散的雾化 (2)创建2D 字体 (2)绘制字体 (2)5创建3D 文字网格 (2)8.游戏控制................ . . . . . . . . . . . . . . . . . . . .4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....DirectInput 实现键盘控制 (2)...........................................DirectInput 实现鼠标控制 (2)..........................................................鼠标键选 (2)9.游戏音乐音效 (4)6D3D基本框架创建D3D对象:Direct3DCreate9(D3D_SDK_VERSION)===============================================================================DirectX===============================================================================获取显卡显示模式:HRESULT GetAdapterDisplayMode(UINT Adapter, //指定显示卡序列号D3DDISPLAYMODE *pMode //存储显示模式的指针===============================================================================DirectX===============================================================================创建D3D设备接口:HRESULT CreateDevice(UINT Adapter, //显卡序列号D3DDEVTYPE DeviceType, //D3D 设备类型HWND hFocusWindow, //所属窗口句柄DWORD BehaviorFlags, //设备进行3D 运算方式D3DPRESENT_PARAMETERS *pPresentationParameters, //用于存储D3D 设备相关信息的指针IDirect3DDevice9 ** ppReturnedDeviceInterface //返回D3D 设备接口指针的地址);第二个参数DeviceType 取值:D3DDEVTYPE_HAL //硬件抽象层,通过显示硬件来完成图形渲染工作D3DDEVTYPE_REF //参考光栅器,一般用于测试显卡不支持的D3D 功能D3DDEVTYPE_SW //用于支持第三方软件第四个参数BehaviorFlags 取值:D3DCREATE_SOFTWARE_VERTEXPROCESSING //由D3D 软件进行顶点运算(常用)D3DCREATE_FPU_PRESERVE //激活双精度浮点运算或浮点运算异常检测,设置该项会降低系统性能D3DCREATE_MULTITHREADED //保___________d+_证D3D 是多线程安全的,设置该项会降低系统性能7D3DCREATE_MIXED_VERTEXPROCESSING //由混合方式进行顶点运算D3DCREATE_HARDWARE_VERTEXPROCESSING //由D3D 硬件进行顶点运算D3DCREATE_PUREDEVICE //禁用D3D 的Get*()函数,禁止D3D使用虚拟设备模拟顶点运算===============================================================================DirectX===============================================================================开始渲染和结束渲染:BeginScene(); //开始渲染……实际的渲染工作……EndScene(); //结束渲染注意:这两个函数必须成对出现,不允许交错和嵌套的发生,实际的渲染工作在这两个函数的中间进行。
获取模型顶点的方法
获取模型顶点的方法可以通过以下步骤进行:
1. 加载模型:首先,需要将模型文件加载到程序中。
根据具体的开发平台和使用的图形库,可以使用相应的函数或类来加载模型文件,例如OpenGL的glLoadModel函数或Unity的AssetBundle.Load函数。
2. 访问顶点数据:一旦模型加载成功,就可以通过访问模型对象的属性或方法来获取顶点数据。
具体的操作取决于使用的图形库和模型格式。
例如,在OpenGL中,可以使用glGetVertexAttribPointerv函数获取顶点缓冲区的指针,然后通过指针访问顶点数据。
3. 解析顶点数据:如果模型文件使用了某种格式(如OBJ、FBX等),则需要对模型文件进行解析,以提取顶点数据。
可以使用相应的解析器库或编写自定义的解析代码,将模型文件中的顶点数据提取出来。
4. 存储顶点数据:一旦获取了顶点数据,可以选择将其存储在程序中的数据结构中,如数组、缓冲区等,以便后续的使用和处理。
需要注意的是,具体的获取顶点数据的方根据使用的图形库、模型格式和开发平台而有所不同。
以上是一般的步骤和思路,具体实现需要根据具体情况来编写代码。
《DirectX游戏设计》考试样题一一、单选题(30题,每题1分,共30分)1.典型的windows SDK方式的开发中,遵循这样一个过程:( C )A.创建窗口—〉显示窗口—〉注册窗口类—〉初始化窗口类B。
注册窗口类-〉初始化窗口类—〉创建窗口-〉显示窗口C.初始化窗口类->注册窗口类—>创建窗口—〉显示窗口D.创建窗口->注册窗口类—〉初始化窗口类—〉显示窗口2.Windows编程中,退出消息循环的条件是:(A )A.GetMessage()从消息队列中获得WM_QUIT消息B.用户按下窗口关闭按钮C.用户调用DestroyWindow()函数D.用户利用Ctrl+Alt+Del,在Windows任务管理器中关闭进程3.Windows SDK方式的开发中,响应菜单或按钮我们需要关注的消息是:( B ) A.WM_CREATE B。
WM_COMMANDC.WM_MENU D.WM_BUTTON4.D3D中属于旋转函数的是:(B )A.D3DXMatrixScaling()B.D3DXMatrixRotationX()C.D3DXMatrixTranslation()D.D3DXMatrixTranspose()5.单位矩阵、矩阵转置、逆矩阵的调用函数分别是:( C )A.D3DXMatrixInverse、D3DXMatrixIdentity、D3DXMatrixTransposeB. D3DXMatrixIdentity、D3DXMatrixInverse、D3DXMatrixTranspose C.D3DXMatrixIdentity、D3DXMatrixTranspose、D3DXMatrixInverse D.D3DXMatrixInverse、D3DXMatrixTranspose、D3DXMatrixIdentity 6.逆矩阵的特点是:( C)A.和原矩阵相乘等于原矩阵B。
DirectX中文手册Microsoft老王翻译Alpha整理alpha_nuaa@目录第一章DirectX基础(初级篇)第一节什么是DirectX一、什么是DirectX ?二、DirectX的组成部分三、关于DirectDraw四、为什么要使用DirectDraw?五、DirectX5.0的新特性?六、什么是部件对象模型(COM)七、自我检测第二节如何安装和使用DirectX一、编译库和运行库二、安装VC++ 5.0三、安装DirectX5.0 的SDK四、DirectX 5.0 的文件说明五、卸载DirectX第三节一个DirectDraw入门程序一、一个小测验二、牛刀小试三、分析代码1)程序结构2)定义和创建DirectDraw对象3)设置控制级和显示模式4)创建主页面5)输出文字6)释放对象7)主窗口类型四、小结第四节DirectDraw图形编程基础知识一、像素和分辨率二、RGB色彩三、设备无关位图(DIB)四、位深度(Bit depth)五、抖动处理(Dithering)六、调色板(Palette)七、GDI与DirectDraw八、位块传送(Blit)九、翻页(Page flipping)十、矩形(Rectangle)十一、精灵动画(Sprite animation)十二、关键色(Color Key)十三、补丁(Patching)十四、范围检查与碰撞检测第二章DirectDraw核心(高级篇)第一节、DirectDraw架构一、DirectDraw结构概览二、DirectDraw对象类型三、硬件抽象层(HAL)四、软件仿真层(HEL)五、系统集成第二节、控制级第三节显示模式一、关于显示模式二、测定支持的显示模式三、设置显示模式四、恢复显示模式五、Mode X和Mode 13显示模式六、对高分辨率和真彩色的支持第四节DirectDraw对象一、什么是DirectDraw对象?二、IDirectDraw2接口的新特性?三、单进程的多DirectDraw对象四、使用CoCreateInstance创建DirectDraw对象第五节页面一、页面的基本概念1)什么是页面2)页面接口3)宽度和宽距4)关键色5)像素格式二、创建页面1)创建主页面2)创建离屏页面3)创建复杂页面和换页链4)创建超宽页面三、换页四、页面丢失五、释放页面六、更新页面属性七、直接访问帧缓存八、使用非本地视频RAM页面九、色彩和格式转换十、覆盖页面1)覆盖页面概览2)DDCAPS的重要成员和标志3)源和目标矩形4)边界和大小限制5)最小和最大缩放系数6)覆盖页面关键色7)覆盖页面的定位8)创建覆盖页面9)覆盖页面的Z轴次序10)覆盖页面的换页十一、Blit到多窗口第六节调色板一、什么是调色板?二、调色板的种类三、对非主页面设置调色板四、共享调色板五、调色板动画第七节裁减器一、什么是“裁减器(Clipper)”对象二、裁减清单(Clip list)三、共享DirectDrawClipper对象四、独立的DirectDrawClipper对象五、用CoCreateInstance创建DirectDrawClipper对象六、对系统鼠标使用裁减器七、对多窗口使用Clipper第八节多显示器系统一、在多显示器系统中列举显示设备二、焦点窗口和设备窗口三、设置焦点窗口和设备窗口四、缺省设备窗口五、多显示器系统中的显示设备与加速特性第九节、高级DirectDraw主题一、对Mode 13的支持1)关于Mode 132)设置Mode 133)Mode 13与页面特性4)使用Mode 13模式二、从DMA中获益1)关于DMA设备支持2)对DMA支持的检测3)典型的DMA方案4)利用DMA三、在窗口模式下使用调色板1)窗口模式的调色板入口类型2)在窗口模式下创建调色板3)在窗口模式下设置调色板入口四、获得换页和Blit操作的状态五、使用Blit进行单色填充六、测定显示硬件的能力七、在视频RAM中储存位图八、Triple Buffering(三缓冲)九、DirectDraw应用程序和窗口风格十、将真彩色匹配到帧缓冲区的色彩空间第一章DirectX基础(初级篇)第一节什么是DirectX?一、什么是DirectX微软的DirectX软件开发工具包(SDK)提供了一套优秀的应用程序编程接口(APIs),这个编程接口可以提供给你开发高质量、实时的应用程序所需要的各种资源。