自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

聚焦游戏和图形引擎开发技术

Stay hungry, Stay foolish

  • 博客(301)
  • 资源 (1)
  • 收藏
  • 关注

原创 3D几何流水线之模型变换

参考书:Real-time Rendering 2nd, 《3D游戏与计算机图形学中的数学方法》最初,物体在模型空间中,通过模型变换改变了物体的位置和朝向,物体被变换到世界空间。按照变换顺序,应该先旋转后平移,对于opengl的规则,是TR X V。矩阵T,R都是4X4的,T中只有第4列有效,其他是单位阵的排列,R中是前3X3子阵有效,其他是单位阵排列,将TR相乘:|

2009-06-21 21:52:00 3055

原创 ZBuffer裁剪planar shadow

适当的操作ZBuffer可以巧妙的完成一些任务,比如我要在擂台的边缘裁剪人的影子。擂台的特点是边缘之外的地方比较低。将影子埋在擂台表面下一点点,先绘制擂台,然后改变z test func,改为greater,并关闭zwrite,然后绘制影子,因为影子是在擂台下面的,这样从擂台上方看,影子具有比擂台表面更大的z值,opengl中z值大意味着离camera远,按照正常的z测试方法,GL_L

2009-06-21 21:51:00 1599

原创 opengl粒子系统的渲染方式

原来一直以为,只有当前颜色alpha使用的混合函数为glBlendFunc( GL_SRC_ALPHA, GL_ONE );也有类似alpha通道的效果。复习一下blend的公式:源颜色是(Rs,Gs,Bs,As),源混合因子是(Sr,Sg,Sb,Sa),目的颜色是(Rd,Gd,Bd,Ad),目的混合因子是(Dr,Dg,Db,Da),而默认的混合计算是加法那么最终混合后的片

2009-06-21 21:50:00 2809

原创 lens flare:镜头光晕

最近的又一个工作是给游戏添加镜头光晕,google一下,gamedev上就有一个很好的教程,最简单的方法是:将太阳位置投影到屏幕空间,如果不在屏幕内就不画,否则从太阳位置向屏幕中心画出一系列的光晕贴图,混合方法还是src:srcalpha,dest:one。可完全当做2d图片进行绘制。我使用irrlicht引擎,就有一个小问题了,如果当做2d图片绘制就必须改变camera,设置一个

2009-06-21 21:49:00 4194

原创 OpenGL clip plane会受modle-view matrix影响

From the red book: OpenGL implementations often must compute the inverse of the modelview matrix so that normals and clipping planes can be correctly transformed to eye coordinates.From google

2009-06-21 21:48:00 2181

原创 成为优秀的程序员真不简单

真正精通一门语言,特别是c++这样的复杂语言,不简单。况且可能需要熟悉3,4种语言,而且要防止惯性的干扰,不简单。精通数据结构和算法以及优化,正确分析选择问题所需要的数据结构和算法,不简单。熟悉自己工作的平台的方方面面,从硬件到操作系统到编译器到各种开发库,不简单。能实用的运用设计模式去设计软件,系统结构清晰合理,开发高效,易维护,不简单。编写的代码就像艺术品,增一行则多,减一

2009-06-13 23:51:00 27727 102

原创 在游戏中使用面向对象的FSM

在游戏中使用面向对象的FSM以前一直是用switch的状态机,因为J2ME没办法用太多类,现在改做c++了,终于可以试一试面向对象的状态机了,代码果然简洁了好多。参考的是《Programming Game AI by Example》第2章,大约改了下。首先要定义一个状态基类:template class State{public: State(){} virtua

2009-05-09 17:27:00 2557

转载 lyo blog3D文章集锦

lyo blog关闭了,好文章做个备份--------------------------------------- Skinned Mesh in M3G Filed under: ProgrammingSkinned Mesh,就是根据skeleton去变换顶点,通过addTransform函数将Vertex和bone绑定,Specification中给出了计算式子:D

2009-04-07 09:27:00 1326

原创 wxGlade & wxFormBuilder

最近在使用wxPython写一个编辑器,做界面使用了wxGlade,以前我只用过wxWidgets+wxFormBuilder的组合,感觉wxPython+wxGlade确实效率更高些,当然这受益于python语言的简洁易用。几点使用体会:1)wxGlade自动生成的代码可以和自己写的代码和平共处。在使用wxFormBuilder时,除了生成界面代码,还要生成派生类代码,这样界面代码不需要做任何修

2009-03-08 11:37:00 8472

转载 do...while(0)的妙用

do...while(0)的妙用 在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。    但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。 1. do...while(0)消除g

2009-01-14 10:10:00 2252 4

转载 斯蒂夫·乔布斯在斯坦福大学毕业典礼上的演讲

 苹果电脑的CEO斯蒂夫·乔布斯在今年斯坦福大学毕业典礼上的演讲,读后令人不禁动容,其文并无华丽之色,也无英文演讲范例中惯用的排比。———译者 斯坦福是世界上最好的大学之一,今天能参加各位的毕业典礼,我备感荣幸。(尖叫声)我从来没有从大学毕业,说句实话,此时算是我离大学毕业最近的一刻。(笑声)今天,我想告诉你们我生命中的三个故事,并非什么了不得的大事件,只是三个小故事而已。 第一个故事

2009-01-13 10:11:00 1707 1

原创 irrlicht中设置平行光

使用scene manager的addLightSceneNode,默认加入的是点光源,设置平行光,需要自己设置SLight,将其type设置为ELT_DIRECTIONAL,这都好说,问题是光的方向,被误导了一下,因为ILightSceneNode本身没有setDirection之类的方法,而SLight::Direction文档中说是read only的,怎么回事?自己直接设了下,完全没有作用

2009-01-04 17:31:00 2049

原创 Building c++ static library for iPhone

It is a good idea to use c++ static library in a iPhone project, for xcode always need rebuild all files once a while ( Even if I modify only cpp file, I dont know why :( ).The way is simple but ther

2008-12-28 11:19:00 2311

转载 (ZT)Matrix Layouts, DirectX and OpenGL

Matrix Layouts, DirectX and OpenGLWhen reading about computer graphics, you invariably run into the mention of the Matrix datatype. Typically, this is a 4x4 matrix of floating-point values,

2008-12-22 18:18:00 1752

原创 Irrlicht引擎:文件系统简介

整个文件io系统位于irr::io名字空间内,接口简洁明了,见下图  这个文件系统的一个特点是,可以将zip包,pak包(Quake2 pak格式)视作目录,包中的文件和磁盘目录的文件一样访问,直接指定文件路径即可。在IFileSystem的实现中,createAndOpenFile的过程是,先遍历所有的zip包(之前必须使用addZipFileArchive设定上),如果找到

2008-12-14 22:07:00 3297

原创 关注Blender-开源的3D创作软件

3D Max, Maya很强大,但他们也很昂贵,但这个世界上总有开源或免费软件可以替代。Blender就是其中之一。Blender是一套三维绘图及绚染软件。它具有跨平台的特性,支持FreeBSD,IRIX,GNU/Linux,Microsoft Windows,Mac OS X,Solaris,及 SkyOS。 除了免费,吸引我的还有他使用python作为脚本。他的劣势是使用的人少,特别是

2008-12-02 13:08:00 2016

原创 iPhone对OpenGL ES的支持程度!

GLBenchMark的结果:http://www.glbenchmark.com/phonedetails.jsp?benchmark=pro&D=Apple%20iPhone&testgroup=gl 这个很重要,复制一份,以备不时之需: OpenGL ES Environment VariablesGL_VENDORImagination Te

2008-11-29 13:18:00 4064

原创 wxWidgets滚动窗口绘图总结

wxWidgets滚动窗口绘图总结 问题:从wxScrolledWindow派生一个类CXCanvas,作为绘图的画布。画布的尺寸可能非常大,远远超出屏幕的大小,绘制的内容可能非常多,全部绘制一遍非常耗时,当滚动条滚动时,覆盖对话框移动时,以及窗口尺寸变换时要让窗口更新竟可能的快,并且要减少闪烁。分析:这个问题涉及到滚动窗口中的绘制,部分更新和减少闪烁。1)滚动窗口绘制,和普通的DC绘

2008-11-27 12:20:00 4239 1

原创 一个快速配置使用wxWidgets的好东西 - wxPack

http://wxpack.sourceforge.net/ A complete wxWidgets Development Kit. Includes: wxWidgets source/binaries, Visual Studio 7.0+ Project Wizard and Integrated Help, wxFormBuilder (RAD Tool), and vario

2008-11-20 00:13:00 3983 1

原创 不重装系统,ICH10打开SATA硬盘AHCI模式

我的主板是技嘉EP43-DS3L,硬盘是SATA的,系统是xp,进过一翻努力,终于在不重装系统的前提下打开了AHCI模式。首先,xp下打开AHCI的主要问题是,在BIOS中打开AHCI后,进xp蓝屏,因为由于xp没装AHCI的驱动,不能识别硬盘了。因为SATA接口都被设置成AHCI模式了,所以如果系统盘插在IDE接口上启动就可以进去装驱动了。但P43/P45的主板,采用的是ICH10的南桥,6

2008-11-15 15:42:00 10622

原创 Windows下编译wxWidgets 2.8.9

wxWidgets 2.8.9出来了以前用makefile编过wx,这次用IDE编译。 1)下载后安装到默认目录C:/wxWidgets-2.8.9/2)使用VC++2005,打开build/msw目录中的wx.dsw,提示转换工程文件格式,选yes to all3)可以选择Build/batch build...或逐个选择项目编译,由于batch build项目太多了,选择很

2008-10-25 19:34:00 2762 2

原创 新PC入手,3D实践开始了

我的新PC终于入手了,调试超频装各种软件游戏,折腾了两周多了show一下配置,留作纪念:Intel酷睿2 E7200 + AVC拿破仑静音版散热器技嘉EP43 DS3L主板1GX2 金士顿 DDR2 800内存MSI Z3850 512M/256bit DDR3显卡(ATI HD3850)先锋213CH刻录机+希捷11代 320G 7200转硬盘CollMaster 酷

2008-09-14 20:51:00 1933 1

原创 一个很好的svn托管站点

免费Svn源代码托管服务:http://www.svnhost.cn/Reg.aspx?code=1593-20080608133722-5bf9bbfabfcbf05f试了下,速度飞快!项目可设定为私人项目和开源项目,并且可以随时修改。

2008-06-08 12:54:00 1622

转载 大学生应该读什么书——一位年轻老师给他的年轻学生的一封回信

 大学生应该读什么书——一位年轻老师给他的年轻学生的一封回信   (喜欢读书者可以参考参考~)   XX同学你好:        很抱歉,这几天一直在忙着改卷子还有监考,无暇回复,请恕迟延。        接到你的信很意外,一则因为现在是一个不读书的年代。相关调查表明,现代中国人是不喜欢读书的,而且读书的功利性很强——看看现在书店里那些书卖的快就知道了。早先有人列出了国民阅读的

2008-05-28 22:14:00 2779

原创 VC++小技巧-Output窗口输出定位

在使用VC++时,经常使用OutputDebugString往往Output窗口写一些调试信息,如果输出信息遵循某种格式,那么在Output窗口中点击相应输出文本就会跳到相应的代码行中。具体格式MSDN中有说,简单的说法,在输出文本的最前面是"文件名(行号):"的格式就可以了。一个例子,用在我的内存泄露检测代码中:wsprintf(output_temp,"%s(%d): >>>>>>>>

2008-05-18 16:20:00 3457

原创 py2exe试用小结

准备用wxPython写点东西,想release到没有python的系统上,于是试试py2exe。py2exe是一个将python脚本打包成可在windows下独立运行程序的工具。现在最新的版本是0.6.6,发布于2006.12.30,已经好久没更新了。适用的python版本是2.5。首先下载安装,非常方便,不必多说。然后看下里面的sample,写了一个setup试了下: from d

2008-05-10 00:18:00 1909

原创 OpenGL学习笔记-OpenGL的变换和矩阵

 OpenGL的变换和矩阵1)指定矩阵类型OpenGL中使用glMatrixMode指定当前要设置的矩阵类型,常用的参数是GL_PROJECTION和GL_MODELVIEW,还有GL_TEXTURE。OpenGL将视点变换(即摄像机变换)和模型变换(即物体变换和世界变换)合二为一了。glMatrixMode指定的模式一但指定就不会变除非再次调用glMatrixMode,所以一般在resh

2008-04-14 11:43:00 2805

原创 3D基本概念答疑(1)

问:为什么在一些书上和文章上看到的变换矩阵以及相乘顺序不一样?答:一个主要原因是行向量和列向量的区别。对于变换矩阵M,如果v是行向量,这时使用v左乘 矩阵: v=vM (v是行向量) 如果v是列向量,就要使用v右乘矩阵: v=Mv (v是列向量) 由于向量矩阵之间的乘法(实际也就是矩阵乘法)是不满足交换率的,所以对于行向量和列向量 ,他们做相同变换的变换矩阵是不一样的,所以在一些书上看到的

2008-02-15 22:41:00 1772

原创 3D文章收藏

辐射度算法:http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm 构建地形系统(翻译)1:http://www.sf.org.cn/design/Design_Tutorial/design_19213.html构建地形系统(翻译)2http://www.sf.org.cn/design/Design_

2007-10-14 22:17:00 2326 3

原创 wxWidgets点滴(1)- 注意wxImageList的取出效率

        我在开发一个2D游戏编辑器的时候,对于tileset使用wxImageList存放,本来是想利用他的方便性。可是运行时发现tileset的绘制速度非常慢,按照经验,不应该是绘图方面的问题,而且我也做了试验,发现如果直接用一个创建好的wxBitmap代替从wxImageList中取出的wxBitmap,速度就恢复正常了。看来是wxImageList的取出操作存在效率问题。查看wxIm

2007-07-05 09:31:00 2483

原创 wxWidgets在windows & VC++下的安装

版本和环境:wxWidgets 2.8.3Windows2000 sp4VC++ 6.0step1:下载wxMSW-2.8.3-Setup.exe,将其安装到C:/wxWidgets_283.(或下载zip包直接解压)安装后的文件夹中有全部的代码和文档以及示例。但没有编译好的lib。因为你可以按照自己的需要去编译。不过好歹要麻烦一下了,好在编译非常方便。step2: 编译之前的配置

2007-04-05 09:14:00 3354

原创 游戏资源打包方法总结

虽然资源打包是个基本问题,但我几乎没见过有人谈过。所以自己总结一下。本文贴在csdn n5 blog上( blog.csdn.net/n5 ),转载请保持完整性。另外本文是持续补充和更新的。首先,定义两个名词。block :打包数据的单位,可以是一个文件也可以是一个数据块。总之是资源包中的一块数据。包,资源包:即包含多份数据的一个文件。1 block size + block data  

2007-02-22 22:26:00 7005 7

转载 Camera In JSR184

转自lyo的blog,原文地址:http://lyo.blogsome.com/2007/01/31/camera-in-jsr184/1. Camera类                  — Lyo Wu写完模拟器的M3G部分,早就想写点总结,不写怕要忘了。那就从最简单的Camera类开始。Camera类封装了3种投影变换:Generic、Parallel、Perspectiv

2007-02-10 21:52:00 2207

原创 我的手机游戏回忆-风云剑侠

 今天在网上搜索时,偶然发现了一篇玩家写的风云剑侠攻略 。写得很不错,很有意思。这个游戏是2004年,我毕业之前,我和同宿舍的哥们fishniao一起制作的。当时我们成立了数秀工作室,并推出了这个游戏。04年的时候,手机游戏才刚刚开始在中国发展,游戏很少,且以动作类居多,主流平台是S40,所以我们这个专为S40制作的武侠类的RPG游戏就很受欢迎。当时在joyes网上有很长的讨论,由于一开始只是体验

2007-01-27 23:32:00 3882 2

原创 博客性别测试

我的测试结果:  N5 100.0%男性倾向,0.0%女性倾向

2007-01-27 22:07:00 1693

原创 专业手机游戏开发基础(2)

状态机            状态机是编译原理的内容,看上去挺复杂的,不过说白了就是选择分支结构。但我为什么要提状态机呢?其实它是一个简化问题的好工具。再复杂的问题都可以被分解成若干小问题去解决。虽然一个游戏很复杂,但我们把它分解成若干块,分而治之,就简单多了。分类的依据就是状态。我们可以将一个游戏划分成很多状态。比如主菜单状态,控制主角状态,暂停状态等。在状态中可以再细分子状态。一直分下去,

2006-12-31 22:36:00 2490 2

原创 专业手机游戏开发基础(1)

 游戏的基本结构       游戏是什么呢?在游戏中,往往是显示各种各样的画面,玩家可以做一些设定好的控制,画面根据玩家的控制有所变化。从这儿可以看出,游戏至少需要三个功能-显示画面,接受玩家输入和对输入产生反馈。这就是常说的渲染,输入输出和逻辑三个模块。将这三个模块组合在一起有很多方法。比如事件驱动-画面保持不变直到接受到输入事件,程序进行逻辑运算然后改变画面。而游戏往往不是这样,游戏是时间

2006-12-31 22:27:00 2501

原创 打包独立的SWT/JFace应用程序

独立的SWT/JFace应用程序既是指脱离Eclipse环境运行的 程序。可作为一个普通Java程序运行。我的方法是将所用的库和自己的class打包到一个可运行Jar中,再wrap成一个exe。即可在装有java环境的windows系统中使用。打包过程当然是使用ant, 配合两个支持ant的工具:混淆器proguard和exe封装工具JSmooth。步骤为:1 编译2 将class拷贝到临时目录r

2006-12-02 23:42:00 2501

原创 SWT绘图需要注意的一个问题

SWT的drawImage比较慢,如果你有一些特殊的需要,比如从一张很大的图片中切出一块来,并进行翻转,而后画出,那么就会非常之慢。这种做法在游戏开发中非常常见。我也是在开发游戏地图编辑工具时发现这个问题的。 猜想可能最底层的实现上先将整张大图就行了翻转,而后切出部分绘制,所以非常慢。我试着将大图切成小图,对小图进行翻转绘制,结果快了5倍!对于这个问题,我的同事在一个国外论坛上发现一个有趣的帖子,

2006-11-02 21:59:00 2561 2

原创 pydev-一个Eclipse的python开发插件

http://pydev.sourceforge.net/刚刚试用,还不错 

2006-10-04 23:22:00 1828

WebGL Programming Guid (英文原版带目录)

WebGL Programming Guid (英文原版带目录),OpenGL ES programming Guid作者又一力作

2018-12-16

空空如也

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

TA关注的人

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