XNA Kick Start

XNA教程(一) 作者:Mike Fleishauer & clayman本文版权归原作者所有,仅供个人学习使用,请勿转载,勿用于任何商业用途。由于本人水平有限,难免出错,不清楚的地方请大家以原著为准。欢迎大家和我多多交流。Blog:http://blog.csdn.net/soilworkclayman_joe@yahoo.com.cn  special thanks to Mike Fleishauer ^_^ 阅读详情

前言

 

       很久以前,翻译了《Managed DirectX9 Kick Start》,在过去的几年中,继续自学,虽然仍未达到自己所希望的目标,不过对托管DirectX以及实时渲染技术已稍有研究。不敢妄谈游戏引擎,但已能实现一些小把戏,以自娱。学习中深感国内资料的匮乏,故凡遇所喜之外文,则边学边翻,期望对有相同喜好之人有所帮助。《Managed DirectX9 Kick Start》是带领我进入实时渲染技术的入门书,由MDX的设计者所编写,全书浅显易懂,又不乏专家级的指导。如今XNA已发布,可惜资料尚少,为了能帮助爱好者入门和学习,希望能在前人的肩膀上,自己编写一份关于XNA的学习资料。

       本教程假设你已经熟悉C#语法,Visual Studio.net 2005开发环境,以及简单WinForm程序开发基础。其中第一条是必须的,贸然学习图形技术,只会让你半途而废。这是一份专注于XNA中图形技术的教程,主要讨论3D图形设计;编程语言语法基础,配置开发环境,通用程序开发技术,以及网络通信都不在本教程讨论范围之内。我将假设你从来没有接触过计算机图形技术,从最基础的内容开始讲解,除了解释API的用法之外,还会附带在API之后的图形学原理和算法。

       此外,为了确保你能运行XNA程序,应该安装以下硬件和软件:

硬件:一块支持Shader Model 2.0的显卡,如果你不知道Shader Model是什么,那么需要保证你的显卡是Nvidia Geforce FX或更高级别的显卡,以及ATI Radeon 9XXX系列或更高级别的显卡。

软件:WindowsXP wih SP2或更高的操作系统,最新版本的DirecxtX SDK,Visual C# 2005 Express,XNA Game Studio Express(Xna Framework)。

       鉴于本人愚钝,错误总是难免的,如果发现了,请及时纠正(clayman_joe@yahoo.com.cn)。

       阅读本资料,说明你已经接受了如下条件:为了保证我的权益,请勿转载,勿把本文用于任何商业用途。小小要求,仅此而已,不希望我免费提供的东西再被人恶意剽窃。所有文章将不定期在本人blog(http://blog.youkuaiyun.com/soilwork/)和中国XNA开发网(http://www.xnadev.cn/)更新。如有需要,我会在每个章节结束之后提供pdf文档。

 

 

第一章 敲开计算机图形的大门

  本文版权归我所有,仅供个人学习使用,请勿转载,勿用于任何商业用途。
由于本人水平有限,难免出错,欢迎大家和我交流。
作者:clayman
Blog:
http://blog.youkuaiyun.com/soilwork
clayman_joe@yahoo.com.cn 
 

 

       这一章,我将带领你学习最基本的基础知识,不要急,我们将从最下面一块积木开始,最终搭建出一个完整的城堡。

 

    如果你希望深入学习一门技术,那么先了解这门技术的来龙去脉,将大有帮助。好了,带上火把和地图(猎枪??不不,我们不需要它),让我们先来进行一点考古工作。

 

XNA的历史

       一切始于2002年12月20号,随着DirectX 9的发布,SDK中加入了Managed DirectX 1.0。顾名思义,Managed DirectX是.net平台上的DirectX,它封装了DX中的大部分功能,几乎实现了函数的一一对应,以便开发者在.net平台上编写3D程序。当然,如果你还要深究,就会发现在开发DirectX 8.1的后期,有一个被称为DirectX for Visual Basic的项目,当.net runtime的第一个beta版本出现后,这个项目变为了DirectX.net,它就是Managed DirectX的雏形。

       在Managed DirectX早期的开发过程中,当移植完了所有的核心API后,开发者发现它的性能只能达到原来C++代码的40%,于是接下来的几个月中,ms的程序员们进行了大量工作来解决所有性能瓶颈问题,最终发行版本的性能已经达到了C++代码的90%甚至更高。

       接下来,进入了.net 2.0时代,在2005年10月的DirectX SDK中,加入了Managed DirectX 2.0的第一个beta版本,除了把API升级到.net 2.0以外,这个版本的MDX还在性能和易用性上有了提高。作为beta1来说,这个版本的MDX有很多Bug,虽然在之后的sdk中,消除了大部分Bug,但却一直停留在beta版本,也没有任何正式的文档。接下来的几个月,再也没有了关于MDX2.0的消息,MDX团队成员的blog也停止了更新。这是一段黑暗的时期,传说东方的天空出现了阴影,一时谣言四起(指环王???-_-),有人说ms要完全放弃这个项目,也有人说ms要用另一个项目来代替它。

       终于,在2006年8月14号的Gamefest 2006上,ms宣布了XNA。其实在更早的时候,就有了一些关于XNA的消息,但ms一直遮遮掩掩,谁也说不准它到底是什么。至此,谜底终于解开,XNA是基于.net的专用于游戏开发的API,可以同时在windows和xbox360上运行。好奇的考古学者总是想弄清每一个名字是什么意思,XNA,听起来和DNA差不多,有什么特殊含义呢?很不幸,ms说xna就是xna,并没有什么特殊含义,也不是缩写。不过民间的传闻却说X代表ms的图形技术(DirectX?),N代表下一代(Next?),A代表构架(architecture?),所以XNA是“下一代图形构架”的含义。好了,你可能有些迷糊了,说了半天这个XNA究竟和MDX 2.0有什么关系呢?简单的说XNA包含了MDX,仔细观察之后,你就会发现Microsoft.Xna.Framework.Graphics中大部分函数都来自于MDX 2.0。

       在2006年12月的DirectX SDK中,移除了所有关于Managed DirectX 2.0的内容,宣告XNA时代的正式来临。当然,至于Managed DirectX 1.0还将长期保留在SDK中,但不再进行更新,只会有一些错误修正。

       好了,考古工作到此结束,拍掉你身上的泥土,回到现代,来看看XNA究竟是什么。

 

近距离观察XNA

       来,拿出箱子里的显微镜,让我们看看XNA究竟是个什么东西。

          上面说过,XNA是基于.net的专用于游戏开发的API。专用于游戏开发意味着什么呢?它表示XNA不仅仅是一套图形函数库。打开XNA的帮助文档可以看到,名称称空间分为了6大部分:

 

Framework:这里是最基本的API,包含了数学库,游戏框架以及一些其他相关的类。其中最重要的就是Game类。如果你有DX或MDX经验的话,就知道SDK中提供了一个名为sampler framework的库,用来搭建基本的游戏框架,包括游戏循环(game loop),资源管理,图形设备管理等等。这些工作是你编写任何一个DirectX游戏都需要实现的基础设施。即使如此,要使用sampler framework搭建一个DirectX程序还是需要编写一定的代码,因此,XNA把这些需要不停重复的东西打包为了一个类—Game,大大减小了开发者入门的难度。作为一个中立的作者,我将告诉你Game类并不是万能的。因为进行了高度封装,因此程序的可扩展性,可控性受到限制,如果你将要编写很大型的游戏,需要获得更多控制权,或者需要用不同的算法,那么实现你自己的Game也许是更好的选择。(仔细研究sampler framework的源代码,将让你对Game类的实现有更多了解。)嘿,不要被窗外跑过的那个亡灵吸引了你的注意力,注意,我并没有说Game不好,实际上,很多情况下这个“智能”的Game已经完全能满足我们的需求。

 

Framework.Audio:显然,无论你想制造噪音还是演奏优美的音乐,你所要的都在这里了。

 

Framework.Content:Conent,内容?什么是内容?简单的说内容就是资源,包括模型,纹理,Effect文件等等。记得我前一部分我说过Framework.Graphics名称空间中包含了MDX中的大部分函数吗?那么遗失的小步分函数是什么呢?这些消失的函数大都位于MDX中的Microsoft.DirectX.DirectD3DX名称空间,大部分是用来把资源加载到程序中的。看到这里你因该有些线索了,这个名称空间下的类都是关于资源管理的,包括加载资源,在资源的生命期对资源进行管理。说到这里就不能不提到Content Pipeline这个词了,你可能已经听说过,它所指的就是这样一系列功能。这里你可能会问Content Pipeline和原来的DirectD3DX有什么区别呢?对于DirectD3DX来说,它所负责的任务只有一个,就是在运行时把资源加载到程序中。而Content Pipeline就不一样了,它对资源的管理分为预处理和运行时管理两部分。所谓的预处理指的是Content Pipeline在程序编译时就将对资源进行处理。比如它将把所有模型文件,图片文件等编译为二进制格式的.xnb文件,在这种特殊的文件中,已经对原来的数据进行了优化和压缩,因此,程序在加载和使用这些资源时将获得更好的性能。当然,如果你需要为资源添加一些特殊的数据,也应该在这个阶段完成,比如计算并添加顶点的法线信息。而运行时的管理则包括资源的加载,在生命期间的管理,以及销毁。在没有Content Pipeline的时代里,资源整个生命期的管理都需要开发者编写大量代码来控制,而Content pipline大大简化了这个过程。为了再一次表明我的诚实和中立性,我还将告诉你一些额外的内容。实际上,Content pipline是整个XNA Framework中争议最大的部分。首先,最大的一点就是Content pipline加载资源的方式,所有资源必须经过预处理才能加载到程序中,你无法直接把自己喜欢的bmp格式的暗夜精灵图片加载到程序中作为背景,无论是艺术家为游戏添加素材,还是玩家制作mod都将变得很困难(不,不要相信那个邪恶的巫师,大部分人的电脑上都不会安装VS.net,更不要说xna framework和Content pipline了)。其次,Content pipline的可控性同样有限,你很难选择其它的资源管理策略。当然,这里的忠告和前面一样,不要轻视Content pipline,作为XNA中的重要技术之一,它同样相当强大,而且目前我们所用的只是1.0版,在以后的版本中可能还会对此进行改进。

 

Framework.Graphics:哦,让人着迷的东西都在这里了,它是整个框架中最有魔力的地方,也是核心部分。你可以用XNA绘制2D或3D图形,它支持DirectX 9.0c 的所有特性(据隐士谷中的寓言者说,未来的XNA将继续升级到DirectX 10,会吗?)。哦,心急的地精们不要跳,我将用后面大部分的内容来逐步介绍他们,现在还不到时候。

 

Framework.Input:我已经看到你的指头在跳舞了,是的,处理用户输入的东西都在这里了,键盘,手柄,游戏杆一个都不能少。

 

Framework.Storage:这里的函数主要用来处理读取和写入文件等。

~~~~~~~~~~未完待续~~~~~~~~~~~~~~

 
C# XNA XBOX 横版射击游戏,仿<沙罗曼蛇>源码 C# XNA XBOX 的案例源码(横版射击游戏,仿<沙罗曼蛇>),游戏引擎十分完备。本源码相关内容见本人博客:http://blog.csdn.net/jinxiu0406/archive/2011/05/18/6429007.aspx 若内容有误请至留言。 立即下载

相关推荐

logisim计组实验八 乘法器

原理:点这里 有问题欢迎留言哦~ 文章目录五位阵列乘法器电路图时间延迟分析六位补码阵列乘法器五位无符号乘法流水线原理图电路图原码一位乘法器原理图电路图补码一位乘法器 五位阵列乘法器 电路图 此处注意:全加器FA的cout端是进位端而非输出端 使用硬件控制比循环累加的速度快得多。 但是存在串行进位链 改进版: 时间延迟分析 T是计算相加数的一级门延迟 3n–>2n 性能差别在1.5倍 ...

treblez's blog 2万+

xna介绍

xna简介: 微软的XNA Frame是明年主推的下一代的游戏开发工具,C#的爱好者们有福了,开发自己的游戏节目,振兴国产游戏,有兴趣的继续向下看!! XNA简介:首先声明,XNA不是游戏引擎,它只是一个游戏开发框架。原来 C# 开发游戏都是使用 Managed DirectX,可惜的是微软已经停止了它的开发,而取而代之的是 XNA。XNA 的目标是用 C# 在 .Net Framework 

shuanghusun的专栏 5378

ubunut 系统安装k8s集群

修改配置文件 kube-metrics-server.yaml 添加监控数据采集容器启动参数,启动 tls 证书验证,否则监控容器接口验证不通过,无法采集监控数据。kube-metrics-server.yaml 140行左右添加参数 --kubelet-insecure-tls。服务器添加配置(配置三台阿里云时间同步服务器作为时间源,本机作为时间同步服务器)客户端配置(第一个源选用集群内的 192.168.10.20 )时间同步配置文件参考如下。

weixin_57489252的博客 1330

XNA Kick Start (二)

 本文版权归我所有,仅供个人学习使用,请勿转载,勿用于任何商业用途。由于本人水平有限,难免出错,欢迎大家和我交流。作者:claymanBlog:http://blog.csdn.net/soilworkclayman_joe@yahoo.com.cn硬件历史:             对于网页或者数据库开发者来说,通常不必深入了解CPU的结构就能编写程序。原因在于CPU是一种通用处理器

Clayman的专栏 3173

ICM42670 IIC驱动与卡尔曼+四元数姿态解算实战

惯性测量单元(IMU)是运动控制、无人机飞控和AR/VR设备的核心传感器,其数据质量直接取决于底层硬件通信可靠性与姿态估计算法鲁棒性。IIC(I²C)作为嵌入式系统中最常用的低速串行总线,需满足确定性时序、抗干扰与实时采样要求;卡尔曼滤波则通过状态建模与噪声协方差优化,在动态环境中融合加速度计与陀螺仪数据;而四元数因其无万向锁、插值平滑、旋转合成高效等优势,成为高精度姿态解算的数学基础。本文以高性能六轴IMU ICM42670为载体,深入剖析IIC硬件设计要点、裸机级驱动优化、Allan方差驱动的卡尔曼参数

weixin_27076351的博客 256

Win11下DCMTK的Visual Studio 2022配置教程

最近有个新需求,需要完成读取和解析DICOM数据相关的SDK

qq_45797625的博客 3261

XNA开发软件硬件环境介绍

本文介绍开发XNA所需要的软件硬件及配置建议,如果您已经成功调试过一个XNA游戏项目,可以跳过本文。主要的内容有:操作系统,开发工具IDE,XNA Framework,.NET Framework,DirectX SDK,显示卡,其它硬件,本站推荐的配置。 所注下载链接皆为官方链接,您也可以在网路上搜寻更多适合您的版本。 操作系统: Windows XP(SP3) Windows Vista...

weixin_30456039的博客 230

GEE必须会教程——一文教会你研究区域分块计算与合并

一整块算不是挺好的吗?emmmm,用过的人都知道,GEE好比幼年期的“紫妍”,要用“丹药”来养的,除非你是萧炎小友,到哪都有人给爆金币。我们今天想做的是计算2020年夏季西藏自治区的植被覆盖度(FVC),FVC的估算需要使用归一化植被指数(NDVI数据),这里我们用到的产品是MODIS的相关数据产品,该产品的分辨率是25 0m。下载好的结果毕竟是一块一块的,怎么对下载好的结果进行拼接,变成一张大图呢,别急,接下来,我们上科研小霸王——R语言。此处,我们通过省份数据,按照属性筛选,得到西藏自治区的行政边界。

Promising_GEO的博客 2512

XNA Kick Start (三)

第二章  XNA程序员手中的画笔——GraphicsDevice本文版权归我所有,仅供个人学习使用,请勿转载,勿用于任何商业用途。由于本人水平有限,难免出错,欢迎大家和我交流。作者:claymanBlog:http://blog.csdn.net/soilworkclayman_joe@yahoo.com.cn        看过艺术家如何绘画吗?无论绘制油画或水彩画,他们总需要一只画

Clayman的专栏 3458

【2026 Science Robotics】Learning realistic lip motions for humanoid face robots

哥伦比亚大学Yuhang Hu团队提出了一种创新方法,通过10自由度软体嘴唇设计和自监督学习算法解决仿人机器人嘴唇动作僵硬问题。研究采用变分自编码器(VAE)和面部动作Transformer(FAT)模型,将语音信号转化为机器人可执行的电机指令。实验表明,该方法在多语言测试中表现优异,用户偏好率达62.5%,显著提升了口型同步的真实感和流畅度。该成果突破了传统机械结构的限制,为跨越"恐怖谷效应"提供了有效解决方案。

志在山顶的人,不会贪念山腰的风景 308

XPATH注入漏洞检测工具汇总

环境 > Python3.7。

墨痕诉清风的博客 743

XNA Kick Start (四)

本文版权归我所有,仅供个人学习使用,请勿转载,勿用于任何商业用途。由于本人水平有限,难免出错,欢迎大家和我交流。作者:claymanBlog:http://blog.csdn.net/soilworkclayman_joe@yahoo.com.cn 三.绘制三角形 创建几何体信息        讲了那么多,还没绘制过任何图形呢,三角形是3D图形中最基本的图元之一,就从绘制三角形

Clayman的专栏 5416

Python爬虫教程:抓取短视频平台数据(以抖音和快手为例)

为什么抓取短视频平台数据?内容分析:通过抓取短视频平台上的视频内容、标题、标签等数据,可以进行内容分类、趋势分析、话题分析等。情感分析:抓取视频的评论数据,并进行情感分析,帮助企业或组织了解公众的情绪反馈。用户行为分析市场监测:通过抓取特定关键词或标签下的视频数据,分析市场趋势,进行竞争对手分析。短视频平台数据类型:视频信息:包括视频标题、描述、标签、作者等。用户信息:包括用户的昵称、粉丝数、关注数等。互动数据评论数据:视频下的用户评论内容及用户信息。

2201_76125261的博客 3663

XNA Kick Start (五)

第三章 进入3D世界本文版权归我所有,仅供个人学习使用,请勿转载,勿用于任何商业用途。由于本人水平有限,难免出错,欢迎大家和我交流。作者:claymanBlog:http://blog.csdn.net/soilworkclayman_joe@yahoo.com.cn     上一章,我们学习了如何使用XNA显示简单图形。你可能已经开始抱怨我讲了两章,却还停留在2D图形

Clayman的专栏 4688

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

XNA Kick Start (六)

 第三章 进入3D世界本文版权归我所有,仅供个人学习使用,请勿转载,勿用于任何商业用途。由于本人水平有限,难免出错,欢迎大家和我交流。作者:claymanBlog:http://blog.csdn.net/soilworkclayman_joe@yahoo.com.cn三维化三角形       为了让三角形看起来3D一些,所要做的第一步就是在3D空间中重新定义三角形

Clayman的专栏 3755

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

关于Managed DirectX kick start的源码

                  这本书是我很早以前就翻译的了,现在源码光盘 并不在身边。现在需要源码的同志可以到zbuffer去下载,至于其中的资源文件,除第六章的以外,大部分都可以在DirectX SDK里找到。另外,你也可以到gameres上去搜索我原来发帖子,标题是《深入Managed DirectX9》,每一章后面都带了完整代码和资源。            其实个人觉得既然X

Clayman的专栏 3833

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

XNA教程(二)—— Into the 2D World

  作者:Mike Fleishauer & clayman本文版权归原作者所有,仅供个人学习使用,请勿转载,勿用于任何商业用途。由于本人水平有限,难免出错,不清楚的地方请大家以原著为准。欢迎大家和我多多交流。Blog:http://blog.csdn.net/soilworkclayman_joe@yahoo.com.cn  special thanks to Mike Fleishauer ^

Clayman的专栏 8071

xna教程(四)——在xna中绘制字体

作者:clayman仅供个人学习使用,请勿转载,勿用于任何商业用途。由于本人水平有限,难免出错,不清楚的地方请大家以原著为准。欢迎大家和我多多交流。Blog:http://blog.csdn.net/soilworkclayman_joe@yahoo.com.cn             在XNA中绘制字体是一件很麻烦的事。由于XNA是跨平台的,而在Xbox 360中,并不存在系统字体,所以,

Clayman的专栏 6131

XNA教程(三)—— sprite绘制效率

 作者:clayman仅供个人学习使用,请勿转载,勿用于任何商业用途。由于本人水平有限,难免出错,不清楚的地方请大家以原著为准。欢迎大家和我多多交流。Blog:http://blog.csdn.net/soilworkclayman_joe@yahoo.com.cn  虽然内容有所变动,但我的xna教程还会继续^_^本文图片和部分文字来自XNA Diaries,参考了其中两篇关于sprite

Clayman的专栏 5697

在xna中管理资源

                       XNA中, ResourcePool枚举类型由MDX中的4个改为了2个, 分别是Automatic和Manual, 枚举名称也改为了ResourceManagmentMode。其中Automatic对应mdx中的Managed,Manual对应Default。            以Manual方式创建的资源被储存在video memory或AG

Clayman的专栏 4109

使用Managed DirectX编写游戏(-)

作者:clayman clayman_joe@yahoo.com.cn仅供个人学习之用,勿用于任何商业用途,转载请注明作者^_^            3D游戏编程,显然,这是一个很复杂的主题。首先,让我们来学习一些编写任何游戏都会用到的基础知识。把你的创意转变为真实的游戏是一种很有趣的经历。把你的想法雕琢为一个人们可以获得乐趣的游戏,是每个开发者的目标。   

Clayman的专栏 3844

XNA 1.0 Refresh发布 & SpriteFont

               终于,ms在24号放出了期待已久的xna1.0升级包。你可以点击这里下载。在保证和原先版本兼容的基础上,这个包完善了类库,包括字体,音效等多个方面的内容。            这里主要说一下如果绘制字体。这个版本里,绘制字体的操作可以说是大大简化,可以使用系统中安装的任何字体来显示文字。按照sdk里的介绍的方法,content papeline会在编译时,把

Clayman的专栏 3810

一些有用的xna站点

XNA team members blogs:DavidWeller (LetsKillDave)Shawn Hargreaves BlogCornflower BlueManders vs. MachineDeans XNA BlogGraphics StreamTom Millers BlogMichael Kluchers XNA BlogMitch WalkerXNA Team B

Clayman的专栏 3493

i'm just busy, not dead...+_+

             嗯嗯......,似乎有好长一段时间没有写东西了. 最近乱七八糟的事情实在太多             终于可以把公告内容换了,看来猪年我要转运了^_^. 最大的感触是选定了自己的路,就一定要坚持下去,只要能忍受寂寞,终会达到自己的目标.        研究了>中,几篇关于粒子渲染的文章.总的来说,4篇文章都旨在如何提高粒子渲染的效果,而不是控制粒子系统.    

Clayman的专栏 3434
上一篇: My Little SeaWorld
下一篇: Show一下我的书架
soilwork
博客等级 码龄23年 290粉丝 116原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值