自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Clayman的专栏

XNA, GPU Programming & Game Engine Design

  • 博客(131)
  • 收藏
  • 关注

原创 搬家了,新地址http://www.cnblogs.com/clayman/

   终于决定搬家,难用都还可以勉强忍受,可是最近居然开始乱封blog了,怕怕。可惜那么多文章带不走,手动把部份我觉得比较有价值的文章搬过去了。呵呵,欢迎大家有空过去看看:)。 此blog将不再更新...........

2009-05-18 00:59:00 110420 3

原创 Geometry Clipmap Limits

 Geometry Clipmap Limits   我非常喜欢geometry clipmap的思想,甚至还翻译过Hoppe那篇著名的paper,显然这是越来越多的图形计算从cpu到gpu转移的经典例子之一。可惜一直都没有机会实现,直到前段时候,需要编写一个地形系统,终于有了尝试的机会。在完成地形之前,一切都非常好,不幸的是,当实现纹理时,却遇到了非常大的问题,再次印证了那句老话:没有实

2009-05-15 03:59:00 5968 3

原创 InputManager Update Frequency

InputManager Update Frequency  仅供个人学习使用,请勿转载,勿用于任何商业用途。     很高兴上一篇文章引起了很多争论,主要是关于以什么频率更新InputManager。大概是上一篇文章说的不够清楚,所以我想再说的详细一点。    首先,为什么需要IM。Xna只提供了最基本的输入检测方式:只能主动查询某个按键是否被按下,没有事件支持,没有常用的keyJu

2009-05-10 04:28:00 4275 17

原创 Make Your Game Input Robust

Make Your Game Input Robust 仅供个人学习使用,请勿转载,勿用于任何商业用途。    如果你读过 之前 那篇关于InputManager的文章,那么非常抱歉,最近发现那样的设计是有缺陷的。我又一次被隐藏的复杂性打败了-_-#。    问题一,以什么频率进行输入更新。对于XNA framework来说,每次程序主循环调用Update时,都会刷新KeyboardSta

2009-04-28 05:14:00 3673 10

原创 More on Scene Management

 More on Scene Management仅供个人学习使用,请勿转载,勿用于任何商业用途。      相信很多人都看过Tom Forsyth那篇著名的文章>。我第一次看时,只觉得是Tom开的一个小玩笑。不过最近,随着对scene management研究的深入,感觉对于大多数游戏来说,scene graph确实不是那么必须。      由于scene graph实在是一个被严重

2009-04-28 03:53:00 3667

原创 0.033秒的艺术 ---- XNA数学库中的陷阱

0.033秒的艺术 ---- XNA数学库中的陷阱仅供个人学习使用,请勿转载,勿用于任何商业用途。                上一次介绍了如何察看.net程序的asm代码,并且分析了System.Math下的部分函数。这一次,我们将更近一步,分析如何高效使用XNA中的数学的库。下文仅以Matrix和Vector3为例,其余类型均可依此类推。为了达到测试和演示的目的,我写了一段相当”

2009-04-10 02:14:00 4272 1

原创 0.033秒的艺术 --- Know How System.Math Works

0.033秒的艺术 --- Know How System.Math Works仅供个人学习使用,请勿转载,勿用于任何商业用途。       在对.net程序进行调试或者性能测试时,常常需要查看生成的IL代码,但仅仅有IL代码还是不够的,有时我们还希望查看CLR生成的最终asm代码。在VS里,可以非常方便的查看最终的asm代码:当程序执行到断点时,在代码窗口右键选择Go To

2009-04-09 11:23:00 5716 3

原创 Book Review: ShaderX 7

         作为游戏图形开发者一年一度的大餐,ShaderX 7终于出版了。800页的厚度,近2kg重,创造了ShaderX系列的新记录。刚刚拿到手不久,做个简评。     Geometry Manipulation一共5篇文章,都是关于基于geometry shader的real-time tessellate,ATI技术大牛Natalya的一篇还提到了即将到来的DX 11中的Te

2009-04-04 13:49:00 7650 5

原创 Skeletal Model and Skinning Animation

Skeletal Model and Skinning Animation仅供个人学习使用,请勿转载,勿用于任何商业用途。        为了方便讨论,先定义几个术语:Model,一系列MeshPart(MP)(类似d3d里的subset)的集合;MeshPart,组成Model的单元,包含定义几何体的实际数据以及材质,也是最小的渲染单元。       第一个问题,为什

2009-03-29 03:25:00 4846

原创 MeshContent, GeometryContent and VertexContent

   MeshContent, GeometryContent and VertexContent仅供个人学习使用,请勿转载,勿用于任何商业用途。     相信所有第一次写custom content pipeline的人都会被这三个类弄晕,我也一样,这里做一个简单的小结。    MeshContent(MC)可以包含一系列子MeshContent和GeometryContent(

2009-03-17 17:08:00 2927

原创 Scene Management --- Collision Detection

Scene Management --- Collision Detection 仅供个人学习使用,请勿转载,勿用于任何商业用途。     没有碰撞检测的引擎是不完整的。碰撞检测是引擎的基础服务之一,需要为渲染,物理仿真,AI和游戏逻辑都等众多子系统提供服务。由于碰撞检测本身设计到大量数学运算,以及各个子系统对碰撞检测需求的不同,使得它成了最难实现的部分。    碰撞检测需要解决的

2009-03-17 00:13:00 3874

原创 Scene Management --- Culling

Scene Management --- Culling仅供个人学习使用,请勿转载,勿用于任何商业用途。     上次说到场景很大,物体很多时,每帧都把所有物体传递给渲染系统是不可能的。考虑到所见区域只是场景中的一小部分,因此,剔除视野之外的物体,就显得尤为重要,也就是常说的裁剪。本质上,裁剪算是碰撞检测的一部分,通过碰撞检测判断物体是否在视锥之内,但他和游戏里一般的碰撞检测还是有很大

2009-03-15 01:32:00 3456 1

原创 Shaders for Game

       这个标题看起来有点奇怪,大部分人觉得shader的主要用途就是为游戏服务,可惜这最基本的概念却最容易被忽略。如果你经常访问这个blog,就知道我已经很久没有写任何关于shader的文章了。不是我不再对shader感兴趣,就像人人都爱写GUI程序一样,shader永远是游戏编程最让人兴奋的部分-----可以马上获得代码的直观视觉反馈,让人很有成就感。不过当我经历了一个产品的开发过程,并

2009-03-13 02:19:00 4647 4

原创 3D Game Engine Design, Second Edition --- Go to Get it !

         那么多年了,国内的出版商终于发行了一本像样的关于游戏引擎设计的书。以往的《game programming gems》和《GPU Gems》虽然是好书,可惜被翻译之后,大打折扣。     这本书其实应该算是3D Game Engine Architecture Engineering的第二版,因为Architecture是以wild magic3.0来讲的,而Desi

2009-03-11 23:55:00 7803 8

原创 Scene Management --- scene graph

Scene Management -- scene graph仅供个人学习使用,请勿转载,勿用于任何商业用途。              下面是一个简化的游戏引擎数据流,每一帧,scene data作为数据源,输入到物理/碰撞检测和AI子系统,子系统更新所有物体的状态(包括位置,光照信息等等),之后数据流入渲染系统,最终显式在屏幕上。         显然,后面两部分的效率都依

2009-03-10 20:13:00 7464 2

原创 0.033秒的艺术 --- 二叉树遍历

0.033秒的艺术 --- 二叉树遍历仅供个人学习使用,请勿转载,勿用于任何商业用途。        最近在写一些关于树的操作,显然最常见的树操作就是遍历所有节点,而遍历节点,最常见的算法自然是递归。下面是最初的二叉树实现和遍历public class Node{ public Node left; public Node right; publi

2009-03-09 13:11:00 3712 3

原创 When Mono Meets SIMD

     呵呵,正规军也有被游击队打败的时候,Mono2.2提供了对SIMD的支持,矢量运算性能大幅提高,远远超过了MS的实现,甚至与高度优化的C++代码有得一拼。虽然目前还无法和XNA协作,不过再次证明了managed code也可以写出非常高效的代码。不知道此时MS作何感想,希望在.net 4.0也看到对SIMD的支持。 

2009-01-25 12:06:00 3103 3

原创 一些关于引擎设计,Scene Management的文章

    这几天逛GameDev,几乎把所有和Scene Management相关的文章和帖子都翻遍了,看到各种牛人的讨论,受益匪浅啊,对研究引擎设计非常有用,把部分特别有意思的帖子列出来,希望对你也有帮助:)  (以下顺序不分前后) (update on 4.23.09)The Technology of a 3D Engine  part 1, part 2, part 3S

2009-01-21 23:29:00 6570 2

原创 The Design of Model (part 2)

The Design of Model (part 2)仅供个人学习使用,请勿转载,勿用于任何商业用途。    继续上次的讨论,所有渲染器支持的对象都必须支持接口Draw,那么Draw应该实现哪些职责呢?由于已经把材质作为单独的对象来管理,所以Draw只需要完成2个任务:设置几何数据,绘图。下面是一个可能的Draw方法实现:Draw(){    graphicsDevice.V

2009-01-14 01:28:00 3208 3

原创 The Design of Model (part 1)

The Design of Model (part 1)仅供个人学习使用,请勿转载,勿用于任何商业用途。              过去一段时间都做引擎设计,小有成果,过几天陆续整理出来,今天先发个引子吧. ^_^           第一步当然是定义模型数据,有了模型,才方便做后续开发。通俗一点说,就是要创建model类。也许你会说XNA或者说DirectX已

2009-01-13 06:26:00 3800 8

原创 游戏程序员养成计划

09.3.27更新                 与玩游戏相比,写游戏要复杂上千万倍,除了需要掌握通用的编程技巧以外,还要有相当的图形学,物理,数学基础,特别是在国内,由于相关资料的缺乏,更是让初学者无从下手。下面总结了一些入门方法和比较容易入手的资料。         首先你要精通一门高级语言,比如C++或者C#,其次,要有良好的英文阅读能力。对游戏开发者来说英文阅读能力是最重要也是最

2009-01-08 04:25:00 19447 23

原创 杂谈2008—关于游戏和游戏的那些事

              就从SNS开始说吧,08年的前半年,我都在参与一个SNS产品的研发。有人说08年是SNS爆发的一年,这阵由second life和facebook引发的浪潮在去年被放大到极致,于是开心网,校内网,,Hipihi以及大量网页游戏和3D社区涌现出来。结果年底,Google宣布Lively关门大吉(其实我觉得lively是目前所有3D社区里最好的), facebook的市

2009-01-06 04:01:00 2279 5

原创 祝各位童鞋新年快乐~~~~~ !!

 呵呵 ∩__∩y

2008-12-31 16:23:00 1270 1

原创 The Design of XNA Camera

The Design of XNA Camera仅供个人学习使用,请勿转载,勿用于任何商业用途。          在编写任何3D程序之前,建立一个camara是非常有必要的。有多少次当你花了很长时间写完程序,运行时却只看到空空的背景颜色?你检查了模型数据,程序逻辑,shader,最后发现原来是变换矩阵计算错了。这大概是编写3D程序时最常见,也最低级的错误之一。          那么,什

2008-12-27 03:43:00 2762 3

原创 0.033秒的艺术 --- for vs. foreach

0.033秒的艺术 --- for vs. foreach仅供个人学习使用,请勿转载,勿用于任何商业用途。        一直以来,关于C#中for和foreach孰优孰劣的争论似乎从来就没有停止过,各种谣言和真相混杂在一起,以至于这似乎变成了一个很复杂的问题。For的fans认为,foreach内部会分配enumerator,产生垃圾,影响性能;而foreach的支持者则认为编译器会对f

2008-12-21 04:35:00 1499

原创 接下来写什么?

               2008年,写了一年脚本之后,终于觉得开发XNA引擎才是我想做的。于是辞了工作,呆在家里开发自己的引擎,当然也可以说我又成了社会闲散人员:(        转眼之间XNA已经3.0了,俗话都说ms的产品要到3.0才好用。确实,可以看到这个版本的类库已经稳定下来了。3.0在图形方面没有什么重大改进,而是增加了部分对于Xbox Live的新功能和对Zune的支持。其实对于

2008-12-20 02:05:00 1742 12

原创 A Simple Input Manager for XNA

A Simple Input Manager for XNA仅供个人学习使用,请勿转载,勿用于任何商业用途。(update on 4.28 09: 这篇文章的设计是有bug的,详细更新可以看这里)           Why we need input manager? 在PC平台上,KeyboardState和MouseState提供了基本的用户输入信息,但是对实际编写游戏来说,还缺

2008-12-20 00:42:00 1932

原创 Beware of GPU memory bandwidth!!

Beware of GPU memory bandwidth     仅供个人学习使用,请勿转载,勿用于任何商业用途。        前段时间,写了一系列Post-Process effect,包括screen spance的motion blur, 折射,散射等等。大部分shader都非常简单,无非是把一个full screen quad渲染到屏幕,通常不超过10行ps代码,不含任何分支

2008-12-08 04:02:00 2828 2

原创 XNA中的RenderTarget

      RenderTarget也许是最容易让新手误解的技术之一. 打个比方, RenderTarget其实就像一块画布. 大多数情况下, 这块画布就是我们的backbuffer.  但很多时候, 我们需要生成一些中间纹理, 这就需要一块新画布, 也就是一块RenderTarget.  从物理上来说, RenderTarget和backbuffer一样, 是显卡中的一段连续显存, 当Rende

2008-12-03 02:39:00 2443 4

原创 用XNA显示GPU系统信息

      在开发图形程序时, 为了保证在各种硬件环境下都有较好的兼容性, 常常需要根据具体的硬件做一些调整, 当然还包括允许用户修改分辨率这种最常见的任务. 那么首先就必须知道硬件所支持的各种特性. 原来的MDX有一个这样的例子, 今天用xna重新写了一遍, 非常简单, 100行代码左右:)     这里要用到2个类: GraphicsAdapter和GraphicsDeviceCapa

2008-12-02 02:14:00 1176 2

原创 Font System Finished!

      这几天加强了字体系统, 功能和性能都已经比较完善了:1.支持任意字体和大小.2. 支持string和StringBuilder3. 支持从字符串中的某个指定位置开始绘制.4. 支持x,y方向上的非均匀缩放5. 支持2D空间内的旋转.6. 支持任意颜色7. 添加了DrawStringInRegion(), 在指定区域内显示文字,支持自动换行, 裁剪超出显示区域的文字. 暂时还不支持缩

2008-12-02 01:41:00 1319 3

原创 0.033秒的艺术 --- 测试程序性能

这是一系列关于C#与游戏编程性能提示的文章,先来看看如何简单测试一段C#程序的性能。 0.033秒的艺术 --- 测试程序性能 仅供个人学习使用,请勿转载,勿用于任何商业用途。      交互式的实时3D程序每秒至少渲染30帧图像,才能保证视觉上的平滑,这意味着所有渲染,AI,物理仿真都必须在0.033秒内完成。只有高度优化的代码和算法才能达到这样的要求。如何判断某个算法是否能满足要求,如

2008-11-28 00:51:00 1465 1

原创 XNA下的中文显示

        我又回来勒,呵呵。一年多没有更新这个blog了,一年时间发生了太多事情,上一篇文章的还是关于XNA 2.0beta,如今3.0的正式版都出来了。有时候想写的东西太多,反而不知道改写什么了。把最近几天把实现中文显示的思路写出来,希望对大家有帮助。今后这个blog可能会更新的频繁一些了:)      XNA下的中文显示仅供个人学习使用,请勿转载,勿用于任何商业用途。    

2008-11-19 02:22:00 5694 13

原创 关于XNA 2.0 beta

            XNA2.0 beta发布已经快1周了,似乎我应该写点东西了…………………..      So, what’s new?1. 2.0 已经支持visual studio的所有版本了,如果团队开发的话可以方便的使用代码管理工具了。2. 原先的应用程序模型稍稍做了一些改变,可以更方便的访问GraphicDevice和ContentManager.3. 网络支持,这个不说了,

2007-11-26 23:40:00 3813 5

原创 Managed DirectX source code uploaded.......

            终于,在硬盘一个被我遗忘的角落找到了全书的完整代码-_-#。随手测试了一下,大部分都可以运行。 因为原书在mdx刚发行的时候就出版了,后面几个版本api有了部分变换,如果编译出现错误,请检查自己用的sdk版本,参考文档中的相关内容(很多属性变为了方法)。 压缩包里的文件是我原来在翻译时编写调试的时候编写的,所以并不完全和原代码相同(但基本上95%都是一样的)。如果有不清楚的

2007-11-24 01:29:00 2472 5

原创 啊,把图片补上了

         把丢失的图片(大部分)补上了,嗯嗯,至少在我的机器上已经可以正确显示了。          一直期待XNA2.0中的网络功能,可惜今天看到除了局域网内的pc互联之外,其它互联方式都需要用户有一定级别的Live账户或者XNA Creators Club账户才行,狂晕中........        从XNA开发组成员的blog上开,2.0已经离我们越来越近了。       

2007-11-18 20:25:00 2185 8

原创 啊,潜水半年,再次浮出水面

        好久没有更新了,这个blog几乎荒废,唉。上班的日子回到家就累的不想动。 半年过去了,除了打字速度得到提升以外,基本没多大长进-_-#。       临近年末,估计xna2.0也快出来了(嗯嗯,大概在圣诞前吧)。我的生活快又有大的变动了,希望能早点把手上的项目做完。        贴几个有用的链接: 关于如何在windows平台上部署安装xna程序:http://forum

2007-11-12 22:23:00 1817 10

原创 XNA Kick Start (六)

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

2007-05-05 17:37:00 3669 12

原创 The ancient sprite has gone

The ancient sprite has gone ……….         Do you ever checked the sdk document before post a entry in the forum or ask someone in the QQ group?? Unfortunate, most people are not……         在朋友的邀

2007-05-03 01:58:00 2598 12

原创 XNA 1.0 Refresh发布 & SpriteFont

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

2007-04-24 22:14:00 3670 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除