自定义博客皮肤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

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

原创 C++并不支持Unicode,即使是utf8

时至今日,字符串使用unicode已经是不需要理由的常识,但对一些有着悠久历史的编程语言来说,这仍然是个头痛的问题。如果抛开第三方库的支持,C++其实并不能实际有效地支持unicode,即使是utf8。(注:本文讨论的是字符串在内存中的编码方案,而不是文件或网络数据流。)

2014-10-04 17:41:36 6574 2

翻译 OpenGL驱动质量的事实现状(精简翻译版)

原文:http://richg42.blogspot.com/2014/05/the-truth-on-opengl-driver-quality.html 一、厂商A: 为大多数开发者所使用,功能最全,测试得最好,几乎是事实上的标准驱动。其驱动性能很高,而且其设计偏向于实际中管用,而不是...

2014-05-14 22:10:21 3976 0

原创 翻新并行程序设计的认知整理版(state of the art parallel)

近几年,业内对并行和并发积累了丰富的经验,有了较深刻的理解。但之前积累的大量教材,在当今的软硬件体系下,反而都成了负面教材。所以,有必要加强宣传,翻新大家的认知。 首先,天地倒悬,结论先行:当你需要并行时,优先考虑不需要线程间共享数据的设计,其次考虑共享Immutable的数据,最糟情况是共...

2014-05-10 08:30:48 3482 1

原创 内核模式驱动不推荐使用C++的缘由

本文所讲内容主要源自Windows DDK文档。 一、内存页面交换 和用户模式程序不同,内存页面交换对内核模式的代码不是透明的,而是需要一定程度的主动管理,要保证在代码执行过程中不会需要载入新的页面。编译器有相关的扩展#pragma指令来帮助C代码显式控制生成的二进制代码布局,以便相关的代...

2013-12-03 13:36:40 3532 0

翻译 C++/C#/Java等非web语言交叉编译到JavaScript的实用现状

自从两年前见识了浏览器里用JavaScript运行Linux后,看看如今JavaScript交叉编译的进展。看来我也要考虑一下这东西的实用性了。 以下为翻译转述。 常见交叉编译器: C/C++: Emscripten, Mandreel Java: Google Web Toolk...

2013-10-17 15:38:14 3933 0

转载 程序员才能看懂的幽默

这孩子有成为程序员的天赋: 吐槽JavaOne大会

2013-10-08 17:26:08 3288 0

原创 常见开源协议大白话说明

GPL:只要你用了任何该协议的库、甚至是一段代码,那么你的整个程序,不管以何种方式链接,都必须全部使用GPL协议、并遵循该协议开源。商业软件公司一般禁用GPL代码,但可以使用GPL的可执行文件和应用程序。 AGPL:即Affero GPL,是GPL的更严格版本。只要你用了任何该协议的库、甚至...

2013-10-07 22:07:22 19963 3

原创 GC与显式内存管理

C++复兴的话题至今已被鼓吹两年有余,Herb Sutter和Bjarne Stroustrup等大牛们也为C++带来了大步伐的革新。然而,从这两年的效果而言,C++的复兴并没有发生。一方面随着世界经济的动荡,IT行业也出现了一定程度的衰退;另一方面这也是个新兴语言如雨后春笋的时代,尤其是web平...

2013-10-05 23:46:32 4346 1

原创 k-thread 与 n-thread

一段程序,如果最多只能利用有限常数个数的线程,那么它为k-thread的。比如,如果设计一个线程加载资源、一个线程计算、一个线程显示,那么最多能利用3个线程,在一个8核处理器上至少5个核是没有利用的。 而如果一段程序能利用任意多个线程,则被称为n-thread的。比如,在单核机器上是单线程跑,在...

2013-09-27 22:06:41 2969 0

原创 并行(parallel)和并发(concurrency)

并行(parallel)和并发(concurrency)是两个不同的概念。 并行是指多个任务同时都在执行,一般通过多线程、多进程或多台计算机实现。 并发是指至少两个任务都在推进,不一定是并行的,也可以是时间片切分的方式串行。 Windows 3.x时的协作式多任务(cooperative...

2013-09-27 21:56:46 5003 0

原创 说说游戏制作的build系统

如今的大牌游戏都是动则10G、20G的,build系统已经成了一个创新的新领域。暴雪在GDC2013上就讲了他们自主研发的分布式build系统。 游戏的build不只要build程序代码,还包括各种美工资源的预处理,比如资源提取、校验、格式转换、组合等。而且这些资源普遍比较大,比如一个纹理图...

2013-06-12 09:25:05 3776 0

原创 应用结构:pattern的终结是anti-pattern

以下讨论只针对应用开发,库开发的情况有所不同。 起初,人们大多在用C,人们讨论函数(functions)和编译单元(compilation unit)。 OO(面向对象、对象导向、物件导向)兴起后,人们开始认为,全局函数不好,全局变量不好,应该都封装到类(class)里。 随...

2013-01-28 17:59:50 3190 2

转载 更靠谱一点的编程语言排行榜

TIOBE的编程语言排行榜如今很火,CSDN月月拿它当头条。但相信很多人也对其排名和趋势变化感到惊奇。真有那么多人用Objective C?真有那么多人在用C?Javascript用户竟然会比Perl用户少? 其实,这不过是个数据分析方法问题。不同的方法是可以导致非常不同的结果的。要分析得尽...

2013-01-04 13:10:52 4145 2

原创 反斜线的历史

Windows用户对\字符都不陌生,它是路径分隔符,同时也是C风格字符串的换码符。(正斜线和反斜线很容易搞混,交流时不妨称作撇和捺。) 该符号由Bob Bemer发明,最初用于在ALGOL语言中构造/\和\/符号,也就是逻辑与和或。此人亦是ASCII制定者之一、换码序列(ESCape)的发明...

2012-09-05 15:30:07 3385 0

原创 基于stackoverflow.com问题标签的对语言、平台流行度的统计

注意:本结果仅供参考。局部统计结果不代表整体结果,任何脱离统计背景的解释都是不合理的。 统计时间:2012年6月15日 注1:ruby-on-rails的问题数高于c的问题数,故ruby理应排在c之前。但如此处理又对其他语言不公平,则都得考虑框架,但很多无法将语言和框架数量合理组合,故使用原始...

2012-06-15 14:15:45 2957 0

原创 微软平台生态圈已经改变

二十年来微软主宰了PC,但如今形势已经发生转变,而且这种转变是从微软内部开始的。长话短说,Windows平台Server和Client发展方向明确分离,Server向着云服务、Web应用、数据中心靠拢,Client向手机、平板等消费型产品靠拢,PC沦为向后兼容的过渡品。对普通用户,这种转变不会很快...

2012-05-31 22:29:26 4578 2

转载 简化字始见年代一览表

2012-05-23 14:06:50 2711 0

原创 术语: Marshal (编列、列集)

这个术语因.NET的Interop(不同技术间交互)而流行。取自部队等整编列队集结的本意,引申为对数据格式的重新编排转换,以便在不同标准的二进制接口间传递数据。 注意,这个和数据类型转换不同,数据类型一般并不改变,而只是数据的存储结构改变,从一个标准的结构转换成另一个标准的结构。比如.NET的B...

2012-03-07 11:40:40 3249 0

原创 CurrentCulture 与 CurrentUICulture

这两个都是对应Windows系统的设置。 CurrentCulture和数字、时间日期等的格式化相关,和字符串比较、排序、大小写转换相关。属于软件国际化(Globalization)。 CurrentUICulture用于选择界面语言,和界面语言的翻译相关。属于软件本地化(Localizati...

2012-02-27 20:57:03 4586 0

原创 Silverlight消散,WinRT登台

2011年,Silverlight刚开始有蓬勃发展的起色,不利的传言就开始大量流传。不安的Silverlight开发者们要求微软澄清,但得到的只是沉默。终于随着微软在BUILD上亮相Window 8以及新的API WinRT,开发者们意识到,Silverlight的故事结束了。尽管微软在年底如期发...

2012-02-01 20:43:42 4440 2

原创 由于简繁汉字一对多而导致经常写错的繁体字

这几年国学热,繁体字也热了。于是有了一群明明不会繁体、却偏要用繁体、内裤外穿炫耀的,以为把输入法切换到繁体,就变文化人了。为了不太丢中国人的脸,内裤外穿之前至少也要先速成一下。兹收集常见易用错的繁体字,列表如下,以供申脸者防身,打脸党备用。 【干】 1. 干 gan1:干戈;天干地支,...

2012-01-15 14:25:28 3123 0

原创 游戏Entity层通信机制:超越虚函数

面向对象的程序设计模式无疑是成功的,虚函数机制对构造复杂系统无疑是非常有用的。但面对足够复杂的问题时,我们往往会需要更加强大的机制。游戏的实体层的构造,就是其中一种可能的情况。     有人会惊诧道:哪尼,传说中的XXL号的软件都可以完美地用OO实现,一个游戏逻辑会更复杂?莫急莫急,待我娓娓...

2011-10-30 14:15:06 2403 2

原创 最隐晦的程序设计指引

一、百家争鸣    俗话说,程序员半年不学新东西,就变奥特曼(out man,过时之人)了。IT行业可以说是变化最快的行业,每年都有大量的新概念、新术语、新技术被创造出来,在多数人还在一头雾水时,“更好的”替代品又被创造出来。别的不说了,单说设计方法。    想当年静态类型系统是

2011-07-24 16:14:01 18161 119

原创 Query Comprehension 查询推导式

指Linq的查询语法结构。在Linq诞生之前有个类似的概念List Comprehension——列表推导式,广泛用于函数式编程语言。如Python的:S = [2*x for x in range(101) if x**2 > 3]Linq实现了一种针对强类型语言的更加一般化的架构,推导对...

2011-07-01 13:44:00 1448 0

原创 C++/CLI不是用来写应用的

可以同时支持编译出机器码和.NET托管代码的C++/CLI,前身是Managed C++。程序员喜欢强大的语言可以理解,不少人学用C++也是因为C++很强大。但强大并不一定各方面都擅长,有所得必有所失。其至今的最主要用途,仍然是用于托管和非托管程序的交互,包装非托管代码成托管类库。而用其写.NET...

2011-05-31 14:44:00 2430 0

原创 游戏内容处理工具体系概貌

<br />

2011-05-26 22:09:00 2123 2

原创 常用汉字基础字库

由于如今的操作系统已经可以一套系统支持各种语言,可以选用的字体也就扩展到其他语言版本的字体。此表将各地常用字体作比较分类。

2011-02-20 13:12:00 4333 0

原创 D3D10移植感想

<br />    折腾了许久,今天终于完成到D3D10的移植了。总体感觉不错,性能提高了不少。基本上,有一种再也不想回到混乱的D3D9时代的感觉。新的API很精简,没有冗余,操作和性能的关系很明了,完全贴合硬件。<br /><br />     当然,这也意...

2011-02-07 15:36:00 3596 6

原创 如何在渲染到反射贴图时避免改变CullMode

<br />    通常在渲染到反射贴图时需要翻转CullMode,因为视矩阵被镜像了。但我们知道,减少状态切换是提高3D管线效率的重要优化。更重要的是,渲染到反射贴图涉及到引擎中会用到的大部分Effect,因为他们都需要被用来渲染到反射贴图,这意味着要在较大的范围内考虑和支持翻转Cu...

2011-02-07 12:22:00 2118 0

原创 名词解释:side by side

<br />就是 并存 或 并用,特指不同版本的同一可执行模块在同一机器上或同一进程里可以互不干扰同时并存。<br /> <br />比如A发布的应用有全局共享模块shared.dll的1.0和2.0,B发布的程序也恰巧有同名的shared.dll 1.0,si...

2010-11-08 20:21:00 1346 0

原创 小谈CAD制图和游戏3D的区别

<br />小谈CAD制图和游戏3D的区别<br /><br /> 并不是所有人学3D都是为了做游戏,但如今3D学习资料大多是游戏背景的情况下,会让不少走CAD路线的人走错路。<br /><br /> 游戏领域,3D向着实时电影级效果...

2010-09-25 11:09:00 3984 0

原创 profile在IT领域的profile

<br />profile这个词在IT领域比较难于翻译。尽管IT里的应用大多是基于它 简述 这个意思,但与汉语简述这个词的用法不同,它是可数名词,喻示可以有多个不同的简述存在,不同的情况下可以用不同的简述。好比一个人准备了好几套简历,用于投不同的职位。这时用简述、描述、表述、概要之...

2010-07-24 10:24:00 2340 0

原创 换掉Lua是个错误

要支持一种脚本语言,JavaScript无疑是非常好的选择。最大的优势就是上过网的人大多知道JavaScript是什么,很多人都能写上那么一两行。尽管JavaScript也有一些WTF(Worse Than Failure)的地方,但不影响它成为一个非常成功个的动态脚本语言。在发现Jint开源项目...

2010-05-22 21:16:00 3165 2

原创 WPF四年,尤不足以替代WinForm

WPF四年,尤不足以替代WinFormWPF出山已四年,作为官方内定的下一代UI系统掌门,没少露脸。但这个新掌门能否胜任,仍是众多开发者的心头之虑。通过对VisualStudio 2010的编辑器部分用WPF重写,微软终于对这个胜任与否的问题给出了个证实,当然,也给WPF做了不少重要的改进,尤其是...

2010-05-09 19:37:00 7297 6

原创 LingEngine图形部分架构图

如图: 注:1. 图中实心三角形箭头应为空心三角形箭头。2. SceneSystem和RenderContext都是可以创建多个实例的。3. 每个Actor子类类型对应有一个ActorResource类型,用来管理共享mesh、动画数据等资源。 另:无奖问答,这个结构受了哪些引擎的影响?

2010-04-17 12:32:00 3805 3

原创 为什么不用C++写游戏

当今世界上绝大多数游戏都是C++写的,为什么要说不呢?要做什么?写游戏。写游戏首先要考虑些什么?做什么样的游戏,图形、音效、游戏逻辑如何实现。用C++要先考虑什么?定义跨平台数据类型抽象,实现常用集合类,设计宏实现RTTI,写一个支持Unicode并可以和其他多种字符串类型互相转换的字符串类,自定...

2010-04-12 20:52:00 7201 9

原创 LingEngine——实验轻量级游戏引擎(更新至0.71)

【为什么要做这个游戏引擎】为了挣钱?除了几个出名的引擎外,其他的引擎是很难卖出去的。即使能卖出去,一般也入不敷出,因为那些成功的商业引擎销量大、售价低,你无法卖得比他们贵。而且,没有成功的游戏验证过,就不是好引擎。为了做个更牛叉的?抱歉,没那个本事。国内商业引擎落后国外两三代,参加主流开源项目的可...

2010-04-04 15:57:00 7602 12

原创 通过脚本自由设计游戏UI风格

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE

2010-02-24 20:59:00 2679 0

翻译 中国对龙芯处理器的努力(新闻翻译)

原文:http://www.osnews.com/story/22674/China_s_Loongson_Processor_Effort翻译(注意原作者的有些观点有点不靠谱):Richard Stallman(GNU项目和自由软件基金会的创世人、Emacs之父)用的是什么笔记本电脑?戴尔,惠普...

2010-01-02 18:28:00 1360 0

原创 混乱的GPU术语

针对GPU平台,每个厂商都发明了自己的术语,大致对应关系表: CUDA             Larrabee        Windows        DirectCompute---------------------------------------------------------...

2009-11-23 13:10:00 1163 0

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