自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Dev in Nightmare

程序设计+图形图像+游戏开发

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

原创 为DrawPrimitiveUP(DrawUserPrimitive)洗冤

为DrawPrimitiveUP(DrawUserPrimitive)洗冤最初只因DXSDK文档里说了句推荐用Vertex Buffer而不要用DrawPrimitiveUP(C#里叫DrawUserPrimitive),DrawPrimitiveUP很快被描绘成传说中的瘟疫,人人都在警告不要接近它。估计有人会想过,既然DrawPrimitiveUP这么不好,为什么还要提供它,难道只是为了显示

2007-07-10 15:40:00 5247 1

原创 .NET的GC理解误区

.NET的GC理解误区最近面试了一些人,发现对.NET的GC(垃圾回收)的理解都存在错误。GC其实是相当复杂的系统,虽然95%的情况下我们并不需要考虑它,但仍有5%的情况我们不得不接触GC体系来解决问题。比如这个问题:void Func(){  A a = new A();  B b = new B();  a.RefToB = b;  b.RefT

2007-07-07 11:29:00 2218 2

原创 左手系和右手系转换最最最简便方法

左手系和右手系转换最最最简便方法就是交换Y、Z轴,只需一个矩阵变换:1 0 0 00 0 1 00 1 0 00 0 0 1不需翻转Z轴,不需转置矩阵,不需修改缠绕方向。既可用于转换模型坐标,又可用于世界矩阵、视矩阵。实在是模型转换、移植集成之必备良方。 

2007-07-03 15:26:00 11620 2

原创 燃烧的远征恢复英文语音的方法

刚更新到燃烧的远征,没想到都改汉语配音了,玩了一会,鸡皮疙瘩掉了一地。于是决定恢复英文语音,方法如下:将 Data/enCN 文件夹下的 speech-enCN.MPQ 和 expansion-speech-enCN.MPQ 复制到 Data/zhCN 目录,并将文件名中的 en 改成 zh 并替换 Data/zhCN 目录里的同名文件。注意:本人对该方法造成的任何损失不承担任何责任,替换文件时最

2007-06-28 22:54:00 2058

原创 .NET的情形驱动设计(Scenario Driven Design)

.NET的情形驱动设计(Scenario Driven Design)在新概念泛滥的计算机业,甭管有事没事,每天不吆喝几句敏捷(Agile)啦、模型驱动(Model-Driven)啦、Ajax啦就显得特别没面子。但天天听这些日子久了胃会感到不适。所以呢,今天特别表彰一下默默无闻埋头苦干的情形驱动(Scenario Driven)同学,也就是.NET Framework采用的设计方法。情形驱动和

2007-06-20 16:11:00 1614

原创 一骑当千-龙之命运主题曲歌词

一骑当千-龙之命运主题曲歌词本来能搜到的就少,而且还都是大家靠听力记下来的,多少都有些错误。做Creative Commons不容易啊。几经综合校对,本人提供的这个版本应该是目前错误最少的了。:D—————————————————————————————————[OP]      Heart & Soulむてきのじょうねつ すてきにそうぜつ        無敵の情熱 素敵に壮絶いちどきめた

2007-06-10 10:17:00 3113

原创 John Carmack再现身 说说DX10

John Carmack再现身 说说DX10偶然间看到一篇今年一月份Game Informer对John Carmack(Quake引擎作者,还没忘吧)的采访的报道。这位饱受瞻仰的同志竟然已经在很happy地用DX9开发XBox游戏了。“DX9 is really quite a good API level … Microsoft has done a very, very good job

2007-06-01 17:12:00 2313

原创 不要上当,显示器用绿色背景有害视力

不要上当,显示器用绿色背景有害视力似乎直到今天还有人上这个当,我上当的经历是在8年前了。不要以为绿色对眼睛好,肉眼看到的自然界的绿色都是反射光,而且普遍偏暗,真用那么暗的绿做背景那你只能把文字都改成白色了。较亮的绿色都是饱和度偏高的刺眼颜色,其中三成都是发光体才能有的颜色,远超过一般反射光的刺眼程度。长期用绿背景会眼花的。其实Windows的灰色背景是相当科学的。细心的人可能会注意到老版本Wi

2007-05-10 17:52:00 3820 1

原创 C#智力测验

C#智力测验能正确回答以下问题的,就可以在任何C#面试笔试题面前所向披靡。当然,这比C++的变态题目要简单得多。想知道正确答案,只要编译运行一下即可。祝君好运。1. 以下代码有什么问题?public class B{    protected virtual void F() { Console.WriteLine("B"); }}public class D : B{    protecte

2007-04-04 11:21:00 1701

原创 XNA与MDX,无人知晓的路线图

XNA与MDX,无人知晓的路线图XNA的下一版本已经预期在4月发布,而对.NET上DX的前途仍是疑云重重。随着MDX1.1的冻结,人们期望的MDX2/.NET 2.0到MDX10/D3D10的路线图已随着MDX2项目的取消而湮灭。显然,微软不希望MDX抢了XNA计划的风头,而XNA计划的重头戏就是XBox360。MDX2被重新定位,改造成了XNA Framework,目标锁死XBox开发。这样

2007-03-27 16:00:00 3159 1

原创 WPF与WinForm的抉择

WPF与WinForm的抉择微软曾经对WPF(代号Avalon)抱很大的期望——新一代的华丽用户界面平台,一统Web应用和桌面应用,Flash杀手,尽管微软口头上不承认。几年下来,WPF确实实现了当初的预期的大部分功能,但离称霸软件开发领域还有不小的距离。不过,刚转到WinForm上一两年的开发人员们都很困惑,WinForm究竟还有没有未来。微软只是模糊地说短期内还是WinForm,长期是WP

2007-03-26 17:49:00 11591 4

原创 WinForm缺省字体之迷

WinForm缺省字体之迷上一篇说了Form自动放缩的问题,而缺省的放缩是根据字体的比例的,但奇怪的是,Form的Font属性不是设定好的嘛,为什么会变呢?如果会变的话,它从哪里取得当前系统的字体呢?注意读SDK文档的话会发现Control.Font是个Ambient属性,也就是说,如果没有被用户修改过的话,它会使用父窗口的值。那么Form的父窗口也就是桌面了,也就是该使用桌面的字体。桌面的字

2007-03-25 13:43:00 4315

原创 为什么WinForm会走形

为什么WinForm会走形有时候你会发现本来好好的WinForm程序在别的机器上显示的尺寸就不对了。这些问题主要发生在背景图片、图片框、窗口布局上。那么那就很可能是因为WinForm的自动放缩功能。因为不同语言的系统使用不同的缺省字体,相同字体的系统也可能使用不同的DPI(字符的每英寸点数),传统的Win32程序在不同的系统上经常遇到文本显示不全的问题。.NET的WinForm提供了自动放缩的

2007-03-25 12:47:00 1875

原创 程序开发之“道”

程序开发之“道”1) “有之以为利,无之以为用。”“What has a (positive) existence serves for profitable adaptation, and what has not that for (actual) usefulness.”世界上最高效、最健壮、最易维护的代码就是不存在的那部分代码。这部分代码不占用运行时间、不会被破解攻击、不需要任何维护。

2007-03-25 11:53:00 1571

原创 Vista系统文件夹名缩短的原因

Vista系统文件夹名缩短的原因Vista对文件夹结构做了较大的改动,我的第一印象是它变得更象Unix的布局了。微软终于想通决定缩短文件夹名并去掉名字中间的空格,并使用了部分缩写词。C:/Documents and Settings 改成 C:/UsersMy Documents 改成 DocumentsApplication Data 改成 AppData/RoamingLocal Sett

2007-03-23 11:29:00 2159

原创 为什么游戏偏爱D3D

为什么游戏偏爱D3D如今游戏领域已经是D3D的天下,但还是有人不断搬出10年前John Carmack的话批驳D3D,尽管Carmack后来多次声明D3D已经有了很大改观,以前的批评已经不再适用。如今公认的评价是D3D和OpenGL在功能、速度和易用性上基本等价。但这无法解释为什么游戏开发商倒向D3D。不少人说是因为游戏开发以前是用DirectDraw的,转到同一风格的D3D比较容易。但两者的

2007-03-16 13:46:00 4162 5

原创 Ajax Reload

Ajax Reload长话短说:不管人们对Ajax有多少不同意见,它在今后2年内仍然很重要。作为过渡性技术,Ajax有不少问题,但这不影响它的广泛使用。新的替代型技术将在大约2年后普及。Ajax是Asynchronized JavaScript And XML,但它的所指和它的名字没多大关系,其实本质上就是将网页做得像桌面应用,弥补传统Web应用在用户体验上的不足。说得专业一点就是:一、提高用

2006-12-24 14:08:00 3413

原创 游戏Entity设计不完全整理

游戏Entity设计不完全整理2006-11-26在游戏引擎中,Entity通常被翻译成实体,也常用诸如GameObject、Actor、SimulationObject、Unit、Character等名字。相比于对图像声音引擎的热情,Entity层多年来一直备受冷遇,但最近几年随着大型游戏的发展,Entity层设计的重要性已经达到和图像声音的同等水平,而且已经出现了多种通用型Entity

2006-11-26 15:09:00 8488 8

原创 主要C++流派,看看你是哪一流

主要C++流派,看看你是哪一流1. 经典C++流:类是核心,例程多用C Runtime的,很少用模版,一般是正统教育的结果。2. 古典C流:基本上当C用,偶尔用用对象,不使用异常,喜欢怀旧。3. MFC流:秉承MFC的风格,主要使用MFC/ATL对象和Win32 API,不喜欢STL,用很多的宏把IDE的语法提示模块折磨到崩溃。4. Portable流:以C Runtime和STL为主要工具,

2006-11-01 16:29:00 3858 2

原创 用WeakReference实现共享节点

用WeakReference实现共享节点在C++里要实现共享节点的一个常见方法就是COM式的引用计数。引用计数的好处所有的COM资料都会说,坏处经常可以在各种抱怨帖中看到。最主要的问题就是使用者必须很小心,一有闪失就可能导致资源没有被释放。DotNet里终于可以忘记这些问题了。但设计ResourceManager时,问题又出现了。我这里用游戏程序里常见的ResourceManager做例子,当

2006-10-25 21:12:00 1809

原创 尽早地将变量置null?

尽早地将变量置null?用C++的开发者大多养成了尽早释放资源的好习惯,在转移到dotNet平台后,也要坚持将用完的引用型变量置null,以便GC能够尽快地回收内存。果真如此吗?DotNet的GC是分代式的,目前是四代,生存期最长的在第一代,最短的同时也是最近分配的在第四代。第四代的空间很小,不到一兆。GC在尝试分配内存失败时才启动一次回收,绝大多数的回收只发生在第四代,因为其空间小,回收的花

2006-10-25 20:35:00 1474

原创 抛弃型代码(Throwaway Code)

抛弃型代码(Throwaway Code)说到抛弃型代码可能会让某些接受正统教育的开发人员抓狂,但如今,尽管有人还在为虚拟机和机器代码争论不休,脚本语言却早已成为主流。抛弃型代码自有其用武之地。为什么会有抛弃型代码?因为工程和理论不一样,它不是理想情况,它是不完美的。可能某个系统功能不能满足需要,你不得不用很丑陋的方法绕过这个困难;也可能你的用户突然加入新的需求而破坏了你完美的设计;也许你要维

2006-10-22 13:42:00 3160 2

转载 暴笑魔兽公会聊天记录

(转自www.smth.org)某马甲悄悄的对JJ说:JJ,怎么才能离开公会啊? JJ悄悄的对[某马甲]说:/GQUIT 珊瑚舞离开了公会。 [公会][幸福晨晨]:??? 珊瑚舞加入了公会。 [公会][卡卡呦]:欢迎回来! [公会][幸福晨晨]:饿..... [公会][卡卡呦]:355,你怎么走了? [公会][珊瑚舞]:毛巾花露水的!有白痴害我,问我怎么退出工会。 [公会][幸福晨晨]:那你是怎么

2006-10-14 15:02:00 2359

翻译 Joel的比尔盖茨评审回忆

Joel的比尔盖茨评审回忆[这篇回忆很是珍贵,于是我把它翻译成中文,以便更多人能够了解这个巨无霸公司成功的背后。我知道现在有不少人并不喜欢盖茨,但这篇是关于从前的微软,一个挑战IBM、立志要让每个人都有一台PC的公司。]在早期,Excel有个没有名字的很蹩脚的编程语言,我们叫它“Excel Macros”。这是个严重机能不良的语言,没有全局变量(你必须在表单的单元格里存数据),没有局部变量

2006-09-23 18:08:00 2203

原创 不朽的SceneGraph

 不朽的SceneGraphSceneGraph自3D技术出现伊始就有着教主的地位,而今更是像基督教一样成功传销而且深入人心。在对不朽的SceneGraph顶礼膜拜的时候,有多少人想过,它早已是一具干尸。这里我们先不管广义上的SceneGraph,就说我们常见的狭义SceneGraph,多数常见3D引擎都有的,如Ogre, Irrlicht, OpenSG等, 可能还有你手中的引擎。一般都

2006-09-03 13:09:00 8336 3

原创 Direct3D vs OpenGL的尾声

 Direct3D vs OpenGL的尾声自1996年开始,3D API之战延续至今,并随着GPU程序的广泛应用而炮火渐希,淡出争论的焦点。如果非要论个输赢的话,应该是OpenGL绊倒了自己,以致大业未成。而OpenGL ES异军突起,反而要了OpenGL的老命。战局的高潮起于2001年,为对抗飞速发展的D3D,迫于OpenGL社群的压力,OpenGL ARB开始加快工作进程,于8月推出

2006-07-12 16:41:00 9566 14

原创 DOS/Windows路径分隔符的趣闻

其实,从DOS 2.0开始,也就是从DOS支持目录树开始,路径分隔符就可以是“/”或“/”。只是在shell里只能用“/”。这又是因为DOS 1.0是从CP/M改的,CP/M没有子目录,而且“/”被用作参数前缀。其实DOS的目录系统是继承自Unix系统的,确切的说是当时微软的Xenix系统,没有DOS 1.0的话大家是都愿意用“/”的,这样世界就清净了。 

2006-07-06 21:21:00 3867

原创 异常之死

异常之死早在1995年,C++里就出现了“显式异常指定”(explicit exception specification)。如果你还不知道那是什么,可以回想一下你是否曾经看到过类似如下的东西,尤其是在C++标准库里:void foo() throw(X,Y) {...}就是那个throw,它说:“foo这个函数可能会并只会抛出异常X和Y”。这个东西天生煞星像,打在娘胎里时人们就在

2006-07-06 21:16:00 3133 7

原创 Direct3D 10最新消息

Direct3D 10最新消息2005-12-9【要点】·新的API叫DirectX 10, WGF这个名字已经不再被提及。·D3D10依赖与Vista Display Driver Model,只能在Vista上用。·Vista的桌面系统是基于D3D9的,因为WPF(Windows Presentation Foundation)是要可以在XP上运行的。·Vista仍然支持DX9以及更早的版本,

2005-12-19 20:10:00 2109

翻译 Lua文档翻译(中)

Lua文档翻译(中)类型Lua是动态类型语言,不需要人为指明变量类型,脚本解释器会自动判断变量类型。简单的说,给变量赋什么类型的值,变量就变成什么类型。Lua是动态类型语言,不需要人为指明变量类型,脚本解释器会自动判断变量类型。简单的说,给变量赋什么类型的值,变量就变成什么类型。Lua是动态类型语言,不需要人为指明变量类型,脚本解释器会自动判断变量类型。简单的说,给变量赋什么类型的值,变量就变成什

2005-12-11 11:20:00 4092

翻译 LUA脚本文档中文翻译(基础)

LUA脚本文档中文翻译(基础) 介绍 Lua读作“鹿啊”,是一种据创作者说的类Pascal脚本语言。巴西人做的,其名字"lua"是西班牙语的月亮。Lua是目前在游戏工业中用得最多的脚本语言。优点是执行速度快。 基本概念 一段脚本就是一组命令和数据。命令的术语叫作语句,一段语句可以用do ... end括起来构成一个语句块。语句块是一个相对独立的块,逻辑上等同于一条语句。 脚本中两个减号“--”后面

2005-12-11 11:15:00 6782 1

原创 谈“GDC游戏对象结构会议记要”

谈“GDC游戏对象结构会议记要”本文所基于的《记要》并不是最新的,只是因为有参考价值,拿来说说。  游戏对象结构圆桌会议讨论了游戏对象系统设计中的常见问题,由数百人参加,包括来自Gnostic Labs、Ion Storm、Sammy Studios、Gas Powered Games、Sony和Cyan等公司的代表。聚合与继承要点:有广泛地避免深层继承结构的动向,甚至有关于深层继承到底是传统C+

2005-08-27 10:39:00 2574

转载 Speed of direct calls vs interfaces vs delegates vs virtuals

Speed of direct calls vs interfaces vs delegates vs virtuals Consider the following code:interface IProcessor{    void Process();}class Processor: IProcessor{    public void Process()    {    }}If I w

2005-08-12 11:29:00 1532

转载 When should I use == and when should I use Equals?

When should I use == and when should I use Equals? The Equals method is just a virtual one defined in System.Object, and overridden by whichever classes choose to do so. The == operator is an operator

2005-08-12 11:23:00 1579

转载 What's the difference between an event and a delegate?

Whats the difference between an event and a delegate? Put simply, an event gives more limited access than a delegate. If an event is made public, code in other classes can only add or remove handlers

2005-08-12 11:20:00 1787

原创 网络游戏:为什么失败

网络游戏:为什么失败 继互联网、电子商务、软件培训后,网络游戏是又一个被炒得过热的领域。随着钞票疯狂的砸下来,血拼的优胜劣汰进程也就开始了,如果不能走向成熟,就会走向失败。 开始的时候依靠的是概念和狂热,或者爆发或者默默消亡。第二批开始有竞争,但出于抢站市场的欲望,不论输赢都可以继续砸钱。第三批就是不理智的stampede,一拥而上,不想被踩死就要跑在最前面。 常见错误1:包罗万象的目标有远大的目

2005-06-29 11:31:00 5036 2

原创 可复用设计:组件还是类,这是个问题

可复用设计:组件还是类,这是个问题 当封装一个功能模块时,第一个想法是我可以把它封装成一个类,如果你使用RAD的方法,那么要考虑的下一个问题是要不要把它做成一个组件。 看到这里,RAD的反对者应该准备关闭窗口了,因为他们不考虑“组件”这个词。但不管用不用RAD的概念,面临的问题是一样的,只是有不同的解决方法。 一般当一个类要晋级成一个组件时,一个重要的原因就是有可持久的(persistent)配置

2005-06-19 17:10:00 2790

原创 《魔兽世界》的寻路体系和作弊原理分析

《魔兽世界》的寻路体系和作弊原理分析2005-5-21 概念:寻路模型和显示模型寻路模型:用于寻路的世界可通行(不可通行)区域的数据结构。2D游戏通常使用格子系统,对复杂的3D场景一般使用基于三角面的系统,也有预设路径等其他多种模式,也有些游戏不使用寻路模型,而直接在显示模型上做物理碰撞测试。 显示模型:这里指的显示模型是指和实际显示十分接近的场景模型,并不一定直接用于显示。尤其是在D3D的批传送

2005-05-21 13:08:00 6157 1

原创 GDI+的雷区

GDI+的雷区 2005-4-22  千呼万唤之中,微软终于推出了早该有的精心设计的下一代图形程序接口GDI+,并成为dotNet的图形绘制核心,这些也可以算是陈年旧事了。当几批给微软趟雷的勇士倒下后,大家开始发现GDI+实为鸡肋,食之无味,弃之可惜。 雷区:贼慢的速度 诸位应该也有很多人都已经注意到了,不是一般的慢。找微软和MVP给的优化方法都

2005-04-22 22:14:00 4866 2

原创 GPL受难记

GPL受难记 搞开源就像耶稣传教,GPL就是十字架,生于草野,降妖除魔,只怪圣经对人无效,免不了蒙难的命运。 搞开源就像耶稣传教,GPL就是十字架,生于草野,降妖除魔,只怪圣经对人无效,免不了蒙难的命运。  开源志士是理想主义者,沉迷于传播福音,如同希拉克所说“如果一个人年轻时不向往共产主义,这个人没有良心,如果一个中年时仍然相信共产主义,这个人是笨蛋”。但这个世界不能缺少理想主义者和为之奋斗的人

2005-04-19 23:34:00 3101

空空如也

空空如也

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

TA关注的人

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