首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

求 VB.Net 的 DirectX 课程

2012-08-14 
求 VB.Net 的 DirectX 教程如题!有没有好的~适合初学者的~PDF电子书的教程?!现在用GDI+实在是卡~CPU烂就是

求 VB.Net 的 DirectX 教程
如题!
有没有好的~适合初学者的~PDF电子书的教程?!

现在用GDI+实在是卡~
CPU烂就是不行……


如果有VB.Net的DirectX教程就好了……

[解决办法]
给您一个我以前的网咯摘文:开始游戏开发
第 II 部分 — 介绍 DirectX
 
简介
欢迎阅读“开始游戏开发”的第二篇文章。本文,我们将介绍 DirectX 的基础知识。
DirectX 是一个多媒体 API,它提供标准接口来与图形卡和声卡、输入设备等进行交互。如果没有这组标准 API,您需要为图形卡和声卡的每个组合和每种类型的键盘、鼠标和游戏杆编写不同的代码。DirectX 从具体的硬件中抽象出来,并且将一组通用指令转换成硬件的具体命令。
与所有新工具一样,DirectX 有大量新术语和定义需要理解。除了这些新术语,您还必须提高数学技能。DirectX 和游戏开发一般都需要大量的数学知识,理解一些基础知识对您会有帮助。不过,不需要您拿出老式计算器,我们的思想是要了解目标和实现目标的方式,其余的就是在代码中使用大量预先准备好的数学库。
 返回页首
DirectX 概述
DirectX 首次出现在 1995 年,当时称为“GameSDK”。在其原始形式中,针对的目标是使用 C 和 C++ 的开发人员。只有在 2002 年 12 月该 API 的第一个托管版本 (9.0) 发布以来,才可以使用 C# 或 VB.NET 开发 DirectX(实际上,如果您希望,那么可以使用任何符合 CLR 的语言)。
虽然与非托管版本相比,关于托管 DirectX 的性能争论很多,但商业游戏已使用托管 DirectX 进行创建的事实应该能够从根本上平息这样的争论。虽然某些需要极高性能的游戏可能需要使用非托管代码,但大多数游戏可以使用托管代码或者结合使用托管和非托管代码进行创建。编写托管代码使开发人员的效率更高,从而编写出更多的代码,生成更安全的代码。 
安装 DirectX SDK 之后,在 C:\WINDOWS\Microsoft.NET\Managed DirectX 应该有一个目录,在机器上安装的每个版本的 SDK 都有一个子目录。我机器上使用的已经是第四版了,因此我有四个子目录。在每个子目录中应该有九个 DLL 和九个 XML 文件。由于托管环境中的 .NET 允许同一台机器上的同一个 DLL 文件有多个版本,而不会引起以前被称为 DLL Hell 的问题,所以我们可以使用多版本的托管 DirectX 库。这就允许您在安装新版本之后轻松地回滚到以前的版本。 
如果您以前有在 Windows 下处理 DLL 文件的经验,您可能会担心在同一台计算机上安装同一个文件的多个版本会产生问题。自从 .NET 引入并行版本控制,这些版本控制问题就不复存在了。这意味着当新版本的 SDK 发布时,您可以使用多个版本来检查兼容性问题,而不必强迫自己进行升级。
九个 DLL 文件大致对应于 DirectX 中的十个命名空间。在创建游戏时,我们使用其中的大量命名空间来提供对输入设备、声音、网络播放(当然还有 3D 图形)的支持。
命名空间描述
Microsoft.DirectX公共类和数学结构
Microsoft.DirectX.Direct3D3D 图形和助手库
Microsoft.DirectX.DirectDrawDirect Draw 图形 API。这是旧式命名空间,您不需要使用它。
Microsoft.DirectX.DirectPlay用于多玩家游戏的网络 API
Microsoft.DirectX.DirectSound声音支持
Microsoft.DirectX.DirectInput输入设备支持(例如,鼠标和游戏杆)
Microsoft.DirectX.AudioVideoPlayback播放视频和音频(例如,在 PC 上播放 DVD)
Microsoft.DirectX.Diagnostics疑难解答
Microsoft.DirectX.Security访问安全性
Microsoft.DirectX.Security.Permissions访问安全权限
图 1. DirectX 9.0 命名空间列表。
在继续进行之前,我们需要完成上一篇文章未完成的一些事情。在添加 FrameworkTimer 类之后,我们不能再构建项目,因为我们缺少对 DirectX 的引用。我们现在来修复这个问题,将它们添加进来。
?右键单击 Solution Explorer 中的“References”,选择“Add Reference”。
?在 .NET 选项卡中,向下滚动至发现名为 Microsoft.DirectX 的组件
?按住 CTRL 键,选择以下组件:Microsoft.DirectX、Microsoft.DirectX.Direct3D,并单击 OK。
?最终构建解决方案之前需要完成的最后一步是,注释掉 dxmutmisc.cs 文件中我们不需要的部分。 
?打开 dxmutmisc.cs 文件,注释掉不在 Native Methods 和 Timer 区域中的所有代码。 
?现在构建解决方案(按下 F6)。如果您的所有操作都正确,现在将会构建解决方案。 
 返回页首
我的 GPU 比您的大
在深入 DirectX API 之前,我们先退一步,思考一下我们准备做什么。要创建快速游戏,我们需要使用某种类型的处理器,它允许我们计算要在监视器上显示的实际画面。由于我们都没有图像为 2D 的 3D 监视器,因此我们需要进行一些数学运算,通过将 3D 模型转换成 2D 图像来计算每个帧。如果所有这些计算都使用计算机的 CPU,我们的游戏将运行得较慢,因为我们还必须用同一个 CPU 计算 AI、检查输入。另外,我们还需要运行操作系统和所有后台处理。如果我们能够将图形部分的计算交给独立的处理器,则可以加速处理过程。 
现代的图形卡拥有自己的处理器,称为图形处理单元 (Graphics Processing Unit) 或 GPU。这些 GPU 是专用处理器,它们为执行所需的这类计算而进行了优化。另外,每张图形卡都有自己的内存,实际上相当于计算机内部的一台独立计算机。这意味着,不管您的基本计算机多大、多快,图形速度更多地取决于 GPU 和视频内存,而非其他任何硬件。 
 返回页首
适配器和设备
大多数图形卡同一时间只允许一台监视器与之相连,但有些图形卡提供对多台监视器的支持。您在计算机中也可以同时拥有多块图形卡。不管如何安装,每块图形卡都有一个 Adapter。您可以将它看作计算机中的物理视频卡。适配器从计算机的角度看具有“名称”,第一块适配器(或默认适配器)命名为 0,第二块适配器为 1,依此类推。在 DirectX 中您不直接和适配器相交互。而是使用 Device 连接到适配器。
一个设备代表到特定适配器的一个连接,每个适配器都可以有多个设备与之关联。DirectX 支持三种类型的设备:Hardware、References 和 Software。在我们的游戏中将使用 Hardware 类型,因为它提供运行游戏需要的速度。
现在,我们开始创建将在游戏中使用的设备。将以下代码添加到 GameEngine 窗体的现有代码之后的构造函数中。我们使用该构造函数,因为我们可以保证其中的任何代码都会在其他代码之前运行。这就确保我们始终有一个有效的设备对象,随后可以引用。
?将以下代码添加到紧跟在 this.SetStyle 语句后面的 GameEngine 构造函数中
// Get the ordinal for the default adapter
int adapterOrdinal = Manager.Adapters.Default.Adapter;
// Get our device capabilities so we can check them to set up the CreateFlags
Caps caps = Manager.GetDeviceCaps(adapterOrdinal, DeviceType.Hardware);
CreateFlags createFlags;
// Check the capabilities of the graphcis card is capable of
// performing the vertex-processing operations
// The HardwareVertexProcessing choice is the best
if (caps.DeviceCaps.SupportsHardwareTransformAndLight)


{
createFlags = CreateFlags.HardwareVertexProcessing;
}
else
{
createFlags = CreateFlags.SoftwareVertexProcessing;
}
// If the graphics card supports vertex processing check if the device can
// do rasterization, matrix transformations, and lighting and shading operations
// This combination provides the fastest game experience
if (caps.DeviceCaps.SupportsPureDevice && createFlags == CreateFlags.HardwareVertexProcessing)
{
createFlags |= CreateFlags.PureDevice;
}
// Set up the PresentParameters which determine how the device behaves

[解决办法]
参考
参考
[解决办法]
网上下载《DirectX与VB.NET程序开发》看看,好象是PDG格式的

热点排行