Direct3D9 初级教程
- 格式:pdf
- 大小:666.84 KB
- 文档页数:49
Directx9.0学习教程1-第一个程序Directx9.0 学习教程1 - 第一个程序在图书馆选了N本书,还是觉得直接讲代码的书更适合我,一个完整的列子加上些许注释,比那些一上来就是一大段一大段的文字阐述的教程容易懂的多。
因此我的笔记也开始用这种方式记录。
写在开头: dx(我对directx简称) dx的版本主要有9 和11这两种系列。
API和功能差异还是笔记大的。
但是手头dx9的书笔记齐全。
就开始看dx9 了。
而且学习从来都是学习他的思想,尽管可能换版本要换配置环境,或者换api ,但是大概思想是不变的。
学了总有好处。
下面是学习这本书的第一个列子。
说白了就是个vc++的小框架。
然后有一点dx的代码。
但是这个小框架以后可以自己慢慢丰富。
可能对MFC抵触的童鞋觉得里面的win32 api晦涩难懂,但是完全没必要注意哪些细节,这个小框架只是为了显示一个窗口展示dx ,还有消息处理。
所以会用就行了。
转自/cq361106306/article/details/39549091 先介绍下win32下dx主要工作流程:1.winMain 函数这个是整个工程的入口函数,看代码也是从这里开始看[cpp] view plaincopy1.//先定义窗口类2.WNDCLASSEX wc={...} //细节不用管,你也记不住3.4.//注册窗口类5.RegisterClassEx(&wc);6.7.//然后就是创建窗口类8.HWND hwnd=CreateWindow(....)//里面的参数主要是窗口大小和标题,可以自己改改9.10.//---------以上是win32窗口的东西11.//---------以下就开始d3d的初始化了12.13.//源代码里有很多if这些只看流程我就省略了14.15.//首先把窗口传给D3D。
16.InitD3D(hwnd); //这个函数里面的东西在后面讲。
先记住大概流程就行了17.18.//然后装载模型19.InitGeometry();//这个也后面讲20.21.//初始化完了。
DirectX 9 SDK编程的教程2008-11-11 14:19译:kevin-y程序代码:下载导言欢迎来到我的第一个关于DirectX编程的教程,我们使用的是DirectX 9 SDK。
很大一部分的C#开发人员都等待这个版本。
在此这前,C#开发人员都是通过DirectX 7 或 8 的VB组件,使用COM接口的方式,来进行DirectX的开发。
新版本的DirectX组件提供的更好的性能、更容易的编程。
该教程适合DirectX编程的新手(如我),还有其他使用COM接口进行DirectX开发的人员。
在这教程里,我们将重建一个Super Metroid的游戏(我们就叫她做Managed metroid吧)。
我们将要应用所有DirectX编程中的方方面面(DirectDraw,DirectSound,DirectInput,Direct3D,DirectPlay 和AudioVideoPlayback)。
在第一节我们将要学习在全屏下绘制文字和窗口标题,以此灌输一些基本的DirectDraw知识。
我们所需要的-Microsoft Windows NT4 SP6, Windows 2000, Windows XP Pro(只是编译所需) -Visual C# .NET or Visual Studio .NET-DirectX 9 SDK Full or only C# Part(没有的话要到这Microsoft)-Image editing tool(可选但很有用)-SNES Emulator with Super Metroid ROM(可选)第一节:标题窗口1.加入DirectX 的命名空间到project中。
在引用(reference)中加入Microsoft.DirectX.dll andMicrosoft.DirectX.DirectDraw.dllusing Microsoft.DirectX;using Microsoft.DirectX.DirectDraw;2.加入变量一开始,我们需要建立DirectDraw Device,接着建立Surfaces。
《DirectX9.03D游戏开发编程基础》学习笔记#0序⾔ 这⼀系列的笔记将结合教材《DirectX 9.0 3D游戏开发编程基础》,也就是⼈们常说的龙书,介绍DirectX 9.0 (后⽂简称D9)常⽤的基础知识,并记录学习过程中遇到的⼀些问题。
1.为什么是D9⽽不是D11? DirectX是微软公司制作的⼀套底层图形API (应⽤程序编程接⼝),借助它,可以利⽤硬件加速功能绘制3D场景,被⼴泛应⽤于Microsoft Windows、Microsoft Xbox和Microsoft Xbox 360平台上的游戏开发。
在上述3个平台中,显然Windows平台上的⽤户最多,⽽Windows平台中,XP还占有⾮常⼤的⽐例,且XP只⽀持D9,因此,尽管D11版本更新,且具有⼀些新特性,但在⽬前还不能完全取代D9,主流的PC游戏通常兼顾D9和D11。
再者,D11虽然是D9的升级版本,但两者有很⼤区别,不可以等同。
综上,我们选择从较为基础的D9开始,后续再在D9的基础上学习D11的新特性。
2.开发环境 操作系统:Windows,笔者使⽤的是win8.1 编程语⾔:C++ 编译环境:推荐VS系列 (为啥,和上⾯软件保持⼀致,都⽤微软家的,没⽑病),笔者使⽤的是VS2010,下载链接 (旗舰版,电驴链接,可⽤迅雷下载,32和64位系统都可以安装):ed2k://|file|cn_visual_studio_2010_ultimate_x86_dvd_532347.iso|2685982720|4AE6228933DDE49D9BFA4C3467C831C2|/3.环境安装及测试3.1 环境安装 环境的安装并不复杂,这⾥就不再赘述,有两点注意事项做下简要说明: a. Win8.1下安装VS2010的过程中,弹出了提⽰“由于兼容性问题⽆法使⽤此驱动程序 VSPerf Profiling Control Driver”,该项是性能分析器,并不影响我们后续的学习,因此可忽略这个问题。
Introduction to 3D Game Programming with DirectX 9.0原著: Frank D. Luna第二部分第一章 D3D初始化D3D的初始化以前一直被认为是一项乏味琐碎的工作。
幸运的是8.0版本简化了初始化模式并且DX9.0也使用和它相同的模式。
然而,在这个过程中仍需要我们熟知图形学的基础知识和D3D的基本类型,本章的前几节将讲述这方面的内容。
在余下的小节里将解释初始化的过程。
目的:1.学习D3D怎样与图形硬件交互作用2.弄懂COM在D3D中所扮演的角色3.学习基础图形学知识,如2D图片是如何存储的、页面切换和深度缓冲4.学习如何初始化D3D5.熟悉本书例程中的一些常用的结构1.1 Direct3D概述D3D是一种低层图形API,它主要使用3D硬件加速来进行3D世界的渲染。
我们可以把D3D看作是应用程序和图形设备之间的中介。
例如通知图形设备清空屏幕,应用程序将调用D3D的IDirect3DDevice9::Clear 方法。
图1.1显示了应用程序、D3D和图形设备之间的关系。
此图片被缩小显示,点击查看大图图1.1:应用程序、D3D和硬件间的关系。
图中所表示的D3D是已定义的供程序员使用的D3D接口和函数的集合。
这些接口和函数代表了当前版本的D3D所支持的全部特性集。
注意:仅仅因为D3D支持某种特性,并不意味着你使用的显卡会支持它。
如图1.1所示,在D3D和图形设备之间有一层中介——叫做硬件抽象层(HAL,Hardware Abstraction Layer)。
D3D不能直接作用于图形设备,因为现在市面上的显卡种类实在是太多了并且每种显卡都有不同的性能和处理事件的方式。
例如,两种不同的显卡实现清屏的方式也可能是不同的。
因此,D3D要求设备制造商实现HAL。
HAL是一组指示设备执行某种操作的特殊设备代码的集合。
用这种方法,D3D避免了必须去了解某个设备的特殊细节,使它能够独立于硬件设备而存在。
第一章DirectX 是在管理游戏应用程序编程接口 (API) 为 Windows 平台。
就在几年前游戏者而斗争所产生的硬件的不兼容的问题,使得人人不能享有他们的游戏。
随着后来Microsoft 推出DirectX。
它提供了一个单一的、几乎去除了API 将写入的游戏人员保证兼容性跨不同的 PC 硬件的问题。
多年以来的 DirectX 版本的 Windows 下运行的游戏数量急剧增加。
这是在这一章中,您将学习:■什么 DirectX 是■为什么 DirectX 是有用■的组件组成,DirectX API 什么是DirectX 吗?DirectX 是 Microsoft 集合的 api,旨在为游戏开发人员提供到运行 Windows 的计算机硬件的低级别的接口。
当前版本 9.0,DirectX API 的每个组件提供不同方面的声音,包括图形和一个标准接口,通过访问网络化的硬件。
此接口允许开发人员编写他们使用一组功能而不用管他们用什么的硬件在运行的游戏。
3组件的 DirectX API 拆分成多个的组件,每一名代表在系统的不同方面。
每个 API 可用于单独,从而只需要你的游戏的功能。
下面是组件:■ DirectX 图形。
这是处理所有图形输出的组件。
此 API 提供用于处理绘图,以及初始化和设置您的游戏的决议的 2D 和 3D 图形的函数。
■ DirectInput。
所有用户输入通过此 API 处理。
此组件包括对设备如键盘、鼠标、游戏板和游戏杆的支持。
DirectInput 现在还添加了对反馈功能的支持。
■ DirectPlay。
DirectPlay 通过增加了您的游戏的网络支持。
网络功能提供允许多人玩的其他计算机的通信。
DirectPlay 给您一个高级别接口网络,让你不必执行网络通信的每个方面。
■ DirectSound。
当需要添加声音效果或背景音乐时,这是使用的 API。
DirectSound 的功能可以加载和播放的一个或多个 WAV 文件同时提供了对他们完全控制如何播放。
Direct3D 9基本流程详解一、引言Direct3D9是微软开发的一套用于渲染三维图形的API(应用程序编程接口),广泛应用于游戏开发、多媒体应用以及三维图形渲染等领域。
本文将详细介绍使用Direct3D9进行三维图形渲染的基本流程,包括初始化、资源加载、渲染循环以及资源释放等步骤。
二、初始化在使用Direct3D9进行三维图形渲染之前,需要进行一系列的初始化工作,包括创建Direct3D设备、设置渲染目标等。
具体步骤如下:1.创建Direct3D对象:通过调用Direct3DCreate9函数创建一个IDirect3D9对象,这是与Direct3D9API进行交互的起点。
2.枚举硬件设备:使用IDirect3D9对象的GetAdapterCount和GetAdapterIdentifier方法枚举系统中的显示适配器,并获取其相关信息。
3.创建设备:根据获取到的显示适配器信息,调用IDirect3D9对象的CreateDevice方法创建一个IDirect3DDevice9对象,即Direct3D设备。
在创建设备时,需要指定设备的类型(如窗口设备或全屏设备)、渲染目标以及其他相关参数。
4.设置渲染目标:在创建完设备后,需要为其设置渲染目标,即将渲染结果输出到哪个窗口或纹理上。
这通常通过调用IDirect3DDevice9对象的SetRenderTarget方法实现。
三、资源加载在初始化完成后,可以开始加载所需的资源,如纹理、模型数据等。
这些资源通常存储在外部文件中,如图像文件、模型文件等。
加载资源的一般步骤如下:1.读取文件:使用文件I/O操作读取外部文件中的资源数据。
2.创建资源对象:根据读取到的资源数据,调用相应的Direct3D9API函数创建对应的资源对象,如纹理对象、顶点缓冲对象等。
3.设置资源属性:根据需要设置资源的属性,如纹理的过滤方式、顶点缓冲的顶点格式等。
4.将资源数据上传到GPU:调用资源对象的相应方法,将资源数据从CPU内存上传到GPU内存,以便在渲染时使用。
DirectX 9 SDK编程的教程2008-11-11 14:19译:kevin-y程序代码:下载导言欢迎来到我的第一个关于DirectX编程的教程,我们使用的是DirectX 9 SDK。
很大一部分的C#开发人员都等待这个版本。
在此这前,C#开发人员都是通过DirectX 7 或 8 的VB组件,使用COM接口的方式,来进行DirectX的开发。
新版本的DirectX组件提供的更好的性能、更容易的编程。
该教程适合DirectX编程的新手(如我),还有其他使用COM接口进行DirectX开发的人员。
在这教程里,我们将重建一个Super Metroid的游戏(我们就叫她做Managed metroid吧)。
我们将要应用所有DirectX编程中的方方面面(DirectDraw,DirectSound,DirectInput,Direct3D,DirectPlay 和AudioVideoPlayback)。
在第一节我们将要学习在全屏下绘制文字和窗口标题,以此灌输一些基本的DirectDraw知识。
我们所需要的-Microsoft Windows NT4 SP6, Windows 2000, Windows XP Pro(只是编译所需) -Visual C# .NET or Visual Studio .NET-DirectX 9 SDK Full or only C# Part(没有的话要到这Microsoft)-Image editing tool(可选但很有用)-SNES Emulator with Super Metroid ROM(可选)第一节:标题窗口1.加入DirectX 的命名空间到project中。
在引用(reference)中加入Microsoft.DirectX.dll andMicrosoft.DirectX.DirectDraw.dllusing Microsoft.DirectX;using Microsoft.DirectX.DirectDraw;2.加入变量一开始,我们需要建立DirectDraw Device,接着建立Surfaces。