赞助广告

 

年份

最新评论

评论 RSS

XNA3.0初步——安装XNA Game Studio 3.0

clock 七月 30, 2010 14:39 by author alex
节选自 http://shiba.hpe.sh.cn/jiaoyanzu/WULI/soft/xna.aspx?classId=4,其版权归作者所有 [更多...]

管理Shader——总结

clock 七月 30, 2010 10:32 by author alex
总结 在这一章中我确信您理解了shader的工作原理,包括为何要声明顶点格式,如何通过shader处理顶点数据等。如果您以前有过shader的编程经验,这一章可能不是最令人兴奋的,不过也许你可以学到一些你以前不知道的细节。 下列步骤说明了在xna中如何处理三维数据: 从Model类(或自己定义的顶点缓冲器)获得三维几何数据。 请确认您的shader和xna代码使用相同的顶点格式。 调用shader technique和执行每一个pass渲染您的三维数据。 Vert... [更多...]

管理shader——挑战:编写Diffuse per pixel shader

clock 七月 30, 2010 10:32 by author alex
挑战:编写Diffuse per pixel shader 作为一个小的挑战以更熟悉shader,你可以编写一个简单的Diffuseperpixel shader,与 specularper pixel shader有相同的工作原理,只不过消除了镜面反光。 Diffuseperpixel通常用在没有光泽的材料上,为了能够切换specularperpixel和diffuseperpixel,你应该在simpleshader.fx文件里建立两种technique。 加上以下代码后,您就可以使用空格键动态地在specularperpixel和diffuseperpixel之间切换了: if... [更多...]

管理Shader——将Shader导入到您的引擎

clock 七月 30, 2010 10:30 by author alex
将Shader导入到您的引擎 感谢DirectX和Xna,加载fx文件和设置所有必需的参数是很容易的(上一章在绘制2D直线和3D直线时你已经这样做) 。在下一章您会使用一个更一般的类,它可以接受许多不同的shader,并采用了更优化的方式设置所有必需的参数,但对于这一章在引擎中只使用simpleshader.fx文件。 与以往一样,你通过定义单元测试开始。在命名空间Shader中创建一个新文件simpleshader.cs并写入以下代码: #region Unit Testing public static void TestSimpleShader() { SimpleS... [更多...]

管理Shader——Shader教程

clock 七月 30, 2010 10:28 by author alex
Shader教程 这节贯穿创建你自己的shader的整个过程。这不是世界上最有用的shader,但它展示了如何得到shader,哪些工具能被使用,以及为你将来的可能更令人兴奋的shader做准备。 看一看图6-4你要前进的目标,它展示了来自于上一章的apple模型,不过这一次你的新shader文件SimpleShader.fx 应用于其上,另一个纹理被用来作为它上面的一些文本。 图6-4 SimpleShader.fx使用了一个normal vertex shader,它只转换3D数据,一个对于pixel shader而言简单的镜面反射 per-pixel 技法,pixel ... [更多...]

管理Shader——Shader概览

clock 七月 30, 2010 10:16 by author alex
  管理Shader 现在基本图像引擎已经被启动并且运行了,你暂时可以把注意力放在shader开发。正如上一章提及的,在XNA中一切事物在shader的帮助下被渲染,即便当你使用 SpriteBatch 类或者 SimpleEffect 类模仿固定功能行为,不直接和shader交互的时候。本章遍历从零编写shader的整个过程,然后你学习所有关于vertex buffer、vertex shader 处理过程,以及pixel shader最终如何在屏幕上产生像素。如果你已经是一个shader专家,你很可能想跳过本章或者仅仅快速浏览。但是因为下面几章都依赖于shader的基本知识,... [更多...]

游戏组件——总结

clock 七月 29, 2010 15:40 by author alex
总结 你的小游戏引擎现在有了三个新命名空间,也有许多辅助类可以用在未来的项目中。新的TextureFont 类在下面几章尤其有用。它不仅仅在显示诸如记分板这样的游戏数据上有用,也在单元测试中被使用;为了告诉用户所有可用的热键,在单元测试中显示帮助文本非常有用;万一你遇到问题,显示测试数据或者Debug数据尤其有用。例如,一个camera类的单元测试能输出摄像机的位置和旋转值以便于看出当测试运行时发生了什么。 我希望这四个章节读起来有趣,你喜欢这里开发的简单游戏。街机游戏是有趣,不过只编写简单的2D游戏是没有艺术感的,如果你编写下一个Pong克隆,你肯定也不会更关注。学习的目的是介绍所有的辅... [更多...]

游戏组件——挑战:创建NextBlock游戏组件

clock 七月 29, 2010 15:39 by author alex
挑战:创建NextBlock游戏组件 本章不是真的讨论NextBlock游戏组件,为此有一个原因。我想你去自己创建它。 在本书的源代码中NextBlock类是空的,你的任务是填充它。NextBlock游戏组件已经添加到TetrisGrid类,你已经看过了所有要用到的方法。如果你对自己的解决方案不自信,你可以检查做了全部改进的完整源代码,并且在我做的XNA Tetris全部项目源代码也有完整的NextBlock类,不过我建议你尝试编写游戏组件,也许一些对游戏的其他改进 让你更熟悉所有这些新类。 NextBlock组件应该显示下一个砖块的型号。只要使用来自于TetrisGrid类的BlockT... [更多...]

游戏组件——俄罗斯方块

clock 七月 29, 2010 15:38 by author alex
俄罗斯方块 所有辅助类和游戏组件讨论得够多了。是编写下一个酷游戏的时候了。归功于可以利用小游戏引擎的许多类,在屏幕上书写文本、绘制精灵、播放声音现在很简单。 在进入Tetris游戏逻辑之前,以你在前几个游戏所作的相同方式,考虑所有游戏元素的定位是很有益处的。你只要展示一下背景盒以便于理解将要显示些什么,而不是在屏幕上绘制所有的游戏组件。对于背景,你再一次使用了宇宙背景(我承诺这将是最后一次)。背景盒是一个新纹理,并且以两种模式存在(见图 4-7)。通常分离游戏组件,让每个组件更适应于屏幕。你也可能正好对游戏的两个部分都复用同样的box,不过因为它们之间的外观比例迥异,可能看上去既不适合背景... [更多...]

游戏组件——更多的辅助类

clock 七月 29, 2010 15:34 by author alex
更多的辅助类 在上一章谈论的辅助类还不够么?是的。我们将在Tetris游戏中使用的两个新类在这里还没有被进一步深入讨论,它们只是本书中我真实使用的类的精简版。不过它们仍然很有用,并且有助于你使得游戏编写过程更加容易。 TextureFont类 你已经知道了XNA中缺少字体支持,你也知道位图字型是在XNA中显示文本的唯一选择(也许使用某些自定义3D字体渲染除外)。 在本书第一个游戏中,你正是使用某些精灵来显示游戏或者菜单中的固定文本。这种方式非常容易,不过对于记分板,你在游戏中肯定需要一种方式,提供一个允许你写下任何文本和数字的动态字型。 让我们继续前进,看一看TetrisGame 类... [更多...]

游戏组件——游戏组件

clock 七月 29, 2010 15:29 by author alex
游戏组件 TetrisGame类也拥有Components属性中的所有游戏组件,该属性继承于game类。你能添加任何继承于GameComponent类的子类到这个列表,并且当你的游戏被启动和被更新的时候,该子类会自动地被调用。当你绘制游戏的时候,因为GameComponent类没有Draw方法,所以GameComponent类的子类不会被调用。不过你可以实现自己的绘制方法,或者仅仅使用DrawableGameComponent类,这个类有Draw方法。对于游戏组件,XNA没有直接的Draw方法支持;你必须亲自调用它,以确保所有组件被按照正确的顺序调用。因为这个以及其他一些原因(强迫你使用这个... [更多...]

游戏组件——Game类

clock 七月 29, 2010 15:25 by author alex
Game类 你已经在前几章使用了Game类,不过除了通过调用来自于Program类的Run方法启动游戏和单元测试、使用Initialize、Update、Draw方法之外,那些章节没有谈论基础设计。好的,如果你只是创建一些简单的游戏,你确实不需要知道其他的一切,但是当游戏越来越大,有更多特性的时候,你可能想要考虑类的概观,以及游戏中类的设计。 Game 自身通常持有GraphicsDeviceManager实例中的graphics device和content 字段中的 content manager。你仅仅必须从Program 类创建一个你的游戏类实例,并且调用Run方法来让一切被启... [更多...]

游戏组件——概览

clock 七月 29, 2010 15:21 by author alex
概览 本章讨论Game 类背后的构思,以及你能为之添加的组件。为了在下一章建立你的图像引擎并且运行,在开始3D概念之前,你还需要一些新的辅助类。BaseGame通常实现更多的特性,并且包含至今为止其他所有你写过的类。它被Game类继承,以利用XNA所有现成的特性。我们的主测试类TestClass以同样的方式继承于BaseGame,以帮助你执行游戏中的静态单元测试。然后你将添加TextureFont 类到你的Helpers命名空间,以允许你在屏幕上绘制文本,这不可能是XNA中的超纲内容。最后,你也把一些现成的功能,例如来自于前几章的输入、控制器处理、声音输出,添加到一些特制的类中,以便于更容易... [更多...]

web.config中特殊字符的处理

clock 七月 29, 2010 08:27 by author alex
      在ASP.NET应用中通常需要将数据库用户名和密码写在web.config中(当然也可以直接编译到dll中,增加安全性,但不够灵活修改数据库或使用数据源控件时会有问题)。在这过程中通常会遇到这样一个问题:明明用户明和密码都正确,但数据库却始终无法连接。这是因为数据库密码通常会出现特殊字符像“<”,“>”,“&”等等。这就造成了异常。 解决办法 1.使用"<![CDATA[" 标记开始,以"]]>&... [更多...]

解决办法:无法找到产品Microsoft SQL Server Native Client的安装程序包

clock 七月 29, 2010 00:02 by author alex

[更多...]

辅助类——总结

clock 七月 28, 2010 11:00 by author alex
总结 本章您学习到了大量的类,它们在以后的项目中会非常有用。单元测试也是一个重要的知识点,并且我希望说服你先写单元测试作为开始游戏开发的方式。本章最后关注了Breakout游戏。本章内容很多,幸好您可以跳过Breakout游戏的一些知识点,因为游戏的很多部分都可以重用上一章的Pong游戏。 下一章的中心将稍微放在游戏编程上,以及如何使用组件来构建游戏。本章中您看到了助手类的用处,现在你准备把这种思想扩展到游戏代码中,这对于创建更复杂的游戏来说非常重要。 这里是你在本章所学的扼要重述: 尽可能使用辅助类,把代码封装到方法或者辅助类中,尤其是那些会多次使用的。 ... [更多...]

辅助类——挑战:改进Breakout游戏

clock 七月 28, 2010 10:59 by author alex
  挑战:改进Breakout游戏 您可以尝试给玩家设置更多的生命次数,也可以像在上一章那样添加一个菜单以改进游戏。您也可以把Breakout游戏作为一个测试平台,来检验到目前为止实现了的辅助类。例如,玩家每次完成level 关卡或者打碎了一个砖块的时候,可以写下一条日志消息。 下一章将介绍Input类,它可以使捕获控制器的所有输入更加容易。就像上一章实现Gamepad的Rumble支持那样,游戏可以做一个非常好的改进,以及当砖块被打碎的时候抖动屏幕或者添加简单的爆炸图像。天空背景是个局限;如果您确实喜欢街机游戏(Arcade Games),您会有很多种方式改进这个游戏让它更加... [更多...]

辅助类——Breakout游戏

clock 七月 28, 2010 10:58 by author alex
Breakout游戏 好极了,本章谈论了很多辅助类,最终是时候把它们派上些用场了。这里我将跳过游戏的构思阶段,Breakout游戏大体上说只是一个Pong游戏缩略版本,它只有单人模式,面对的是一墙砖块。最初Breakout游戏是由Nolan Bushnell和Steve Wozniak发明的,并在1976年由Atari公司发行。在这个早期版本中,它就像Pong游戏一样仅仅是个黑白游戏,但为了让它更让人振奋,给显示器上蒙了一层透明条纹来给砖块上色(如图3-13所示)。 图 3-13 实际上,您将通过复用一些Pong的组件以及本章学到的辅助类,走一条相似的路。Breakout是一个... [更多...]

辅助类——其他辅助类

clock 七月 28, 2010 10:54 by author alex
其他辅助类 Helpers命名空间中包括了更多的辅助类;大多数辅助类就像RandomHelper类一样简单。把它们遍历一遍非常沉闷,所以请你们自己审阅本章没有提及的那些辅助类,如果想进一步了解它们可以使用其中内含的单元测试进行检测。 在本章结尾进入Breakout游戏之前,浏览几个余下的辅助类,它们在下面几章中会被频繁地使用:SpriteHelper、EnumHelper和ColorHelper。 SpriteHelper类 在上一章,你使用了多次sprite渲染,因为单元测试你被迫用一种简单的方式来处理XNA中的sprite。这种解决方案,以及事实上你可能把要用到的代码不止一次地放进... [更多...]

辅助类——StringHelper类

clock 七月 28, 2010 10:49 by author alex
StringHelper类 StringHelper类是最大的辅助类之一,估计它是我曾写的第一个辅助类,因为处理字符串会卷入如此之多的问题,很容易就可以想到许多方式来改善性能,更容易地处理字符串列表,输出字符串数据等等。 如果看一看StringHelper类(如图3-9所示),您会立刻发现许多方法,并且所有重载的方法支持很多不同的参数类型。它还包含相当多的单元测试;几分钟前,您就看见过一个来自于StringHelper类的单元测试。 图 3-9 您可能自言自语,为什么这个类中的单元测试那么少,而方法却如此之多。这是因为很多年前我就开始写这个类了,远在我开始使用单元测试之前。其中有... [更多...]

友情链接赞助