- 博客(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
原创 专业手机游戏开发基础(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
WebGL Programming Guid (英文原版带目录)
2018-12-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人