- 博客(72)
- 资源 (14)
- 收藏
- 关注
原创 通过QtMVC实现视图数据分离与数据的排序及过滤显示(续篇)让效率飘起来~
通过QtMVC实现视图数据分离与数据的排序及过滤显示(续篇)让效率飘起来~
2011-03-29 00:08:00
1158
原创 RTT后期合成[多重采样模拟体积光]
<br />很久没写shader了,上次用Cg写了几个NPR渲染的shader。描边、卡通着色等。描边的话,先画纯色的背景,正面剔除,只看里面,然后画被描边的对象,深度检测为小于等于通过。另外卡通着色的话,主要是根据物体表面吸收光的能量大小从一个1D纹理中取颜色。这些东西RenderMonkey里都有,另外FxComposer的shader library里也有很多现成的shader。写shader可以提高对渲染过程和GPU系统的理解,用不用得到那是另一回事。有些shader根本没法用,要求的Shader模
2010-12-13 22:27:00
2637
原创 GuiStudio v0.2.0 [layout & imageset编辑器完成]
GuiStudio v0.2.0 [layout & imageset编辑器完成]
2010-12-12 18:58:00
2202
转载 网游行业九大病根 [转]
<br />以下文字转自网络,作者已不可考。对其中观点,在下没有任何支持或反对看法。我只是感觉他言中了某种事实,留下以备参考。若五年之后如何,十年二十年之后又如何?不管如何,都希望民族游戏能成长起来,民族品牌能光彩一点。目的只有一个,若能让新中国更好地表达古中国,实属大幸。<br /> <br /><br /> 国产网游已经走过了十年,整个产业却远远不能让玩家满意,不能够像日本和美国同行那样层出不穷推出让玩家喜闻乐见的好游戏,抄袭、劣质、山寨网游横行,三郎从中国人自身十大劣根性一针见血的谈谈国产网络游
2010-11-15 17:12:00
896
原创 安全删除指针宏定义
/// 指针安全删除#define SFDelete( ptr ) do { if ( ptr ) { delete ( ptr ); ( ptr ) = NULL; } } while(0)#define SFDeleteC( ptr ) do { if ( ptr ) { delete ( ptr ); } } while(0) 1. 为了适应表达式,指针使用()包
2010-05-01 15:41:00
2217
原创 Ogre&CEGUI窗口状态输入设备及光标调整
使用Ogre&CEGUI时,OIS默认独占鼠标和键盘。适合全屏状态,窗口状态就不好玩了。1. 取消键鼠独占在OIS创建输入系统时,设置参数。w32_mouse,DISCL_FOREGROUND|DISCL_NONEXCLUSIVEw32_keyboard,DISCL_FOREGROUND|DISCL_NONEXCLUSIVE 2. 鼠标范围检测(离开客户区使用win光标,客
2010-05-01 14:20:00
1522
2
原创 CEGUI0.7.1字体优化草案
我个人认为CEGUI在字体渲染上走了一条貌似优雅,但实际却被证明是错误的道路。(至少我是这么觉得,我的试验也是这么证明着。也许这种想法有错,真的有错,找到再改。)首先说说CEGUI处理文字渲染的基本流程。 1. Font::getGlyphData这里需要一个utf32的codepoint,返回的是一个FontGlyph(糅合了codepoint和Image的Map) 2.
2010-04-28 21:53:00
2815
2
原创 使用FreeImage写Freetype2字体图片
以前用OGL时,一直使用FreeImage加载纹理图片。后来使用OGRE/CEGUI,也是用FI加载纹理图片。但这些都是它们底层管理的,用的时候也就没什么特别的感觉了。由于OGRE/CEGUI都使用FreeType2渲染字体,于是乎,就像自己来渲染一下看看。 代码很简单,没什么好说的。不过自己感觉这个结构流程还是蛮清晰的,贴出来留个纪念(明天开始做CEGUI字体优化~~) /**
2010-04-18 19:31:00
2825
2
原创 FreeType 简单用法
1. 包含文件 #include #include FT_FREETYPE_H2. 使用2.1 初始化 FT_Library library; FT_Init_FreeType(&library); FT_Face face; FT_New_Face(library,"abc.ttf",0,&face); FT
2010-04-17 17:19:00
1671
原创 在ubuntu9.10下编译OGRE1.7 & CEGUI0.7.1
其实OGRE/CEGUI都是跨平台的开发库,在Linux下编译它们是件很轻松的事情。如果遇到依赖库(如安装OGRE时的OIS,CEGUI时的Python的正则表达式库等)或工具(生成OGRE1.7工程文件的CMAKE等)时,首先APT-GET一下。如果GET不到,就去其官网DOWN一下,然后编译安装。总之,这个过程并不复杂。另外,如果使用Linux原生的Makefile的话,在configure的
2010-04-05 14:18:00
1413
原创 Windows编程环境中使用VIM
由于几年的Linux操作习惯,对VIM的快速编辑有着强烈的依赖。如果写代码的时候还要去操作方向键,甚至是鼠标,我个人认为这是一种很不高效的做法。后来,到Windows环境做开发。就一直用VS,当然VS的功能还是很强大的。不过少了VIM的快捷,总觉得不舒服。经过搜索,在自己的VS2008中加入了VA和ViEmu两个插件。一下子让自己的coding效率狂飙了起来。(关于这两个插件的获取方式及用法,见g
2010-01-26 23:07:00
1062
原创 LUA脚本的中文字符串显示到CEGUI
以前用LUA的时候没怎么处理过脚本变量里的中文问题。于是,今天试着做了一下。首先,要搞清编码格式及wchar_t的概念。我用的是ANSI编码的LUA脚本文件。其实做法很简单,先把要读取的全局变量压入LUA栈中,然后获取并进行类型验证。这样就得到了一个char数组,使用WIN32API中的MultiByteToWideChar函数将char数组转换到wchar_t数组。最后,可以使用OGRE的UTF
2010-01-13 22:50:00
1388
原创 手动排列窗口控件之像素对齐问题
CEGUI使用了UDim做长度度量。UDim包含缩放比例和像素偏移两部分。因为使用了相对于父窗口的比例,所以转换为像素时就不一定是整数了。比如,父窗口宽800pixels,则相对于父窗口宽的0.001就是0.8pixel。但是,像素也不能是0.8个啊。所以,最终绘制的时候,CEGUI进行了四舍五入。 因此,当要手动去排列一些控件时。一定要使用绝对像素,而不能用按比例缩放。因为要自己进行四舍
2010-01-11 22:51:00
724
原创 使用累加缓存实现运动模糊
以前用OGRE3D的时候,可以使用合成器来实现各种后期效果的合成。个人觉得运动模糊最炫了。于是就自己尝试着使用OPENGL渲染了一下。本方法完全属于我个人独创。(红宝书里没给例子,只是一带而过。网上的代码都不完整,看的我头晕~~于是才决定自己实现~~)。其实,这东东很简单。首先,你必须理解OPENGL累加缓存的意义和作用。明白自己要实现效果(比如运动模糊,景深,抗锯齿等等)的基本原理,OK,你就可
2009-12-27 17:19:00
2940
13
原创 关于模板缓存的一些试验
OPENGL的许多测试处处彰显着“伟大”的可操作性,最常见的ALPHA测试,裁剪测试,深度测试。。但是他们都各有用途,有一个模板测试,参数比较“复杂”。看了红皮书,也不得其解,红皮书搞那个例子真的不敢多说什么,确实很不具有代表性。网上google了一把,全是不透彻的理解(尤其是那些直接复制别人代码的朋友,我对其坚持误解的毅力表示由衷的赞赏~~)。毕竟这玩意儿是美国的SGI首发,还是老美的资料比较切
2009-12-26 20:50:00
1828
原创 使用ALPHA测试改善粒子系统显示效果
自己做的粒子系统,总感觉把粒子起源区域缩到很小一个区域时,起点处就会很亮很别扭。或许有些地方正需要这种效果,不过有些地方未必适合。于是,可以使用OPENGL的ALPHA测试来解决这一状况。效果图如下: 第一幅ALPHA测试未启用,第二幅砍掉ALPHA值在0.75以上的,第三幅砍掉0.5以上的。
2009-12-26 13:00:00
905
1
原创 使用裁剪测试进行多窗口渲染
在一个视口中,通过使用裁剪测试,将窗口分割成若干区域。不同区域使用不同的摄像机视角,然后分别渲染。(UI可以独立在场景之外,进行一次渲染即可。)下面是实现截图,场景元素:一个天空盒,一个地面,一个包含1000粒子的系统,另外10个茶壶(一下子把我的6600LE拖到了10帧之内,晕~) 减少到5个茶壶,FPS明显改善,提高50% 看看这茶壶(g
2009-12-26 12:44:00
930
原创 使用虚继承消除继承二义性
问题描述: 1. 假设有基类CBase2. 类CInherit1继承了此基类3. 类CInherit2继承了此基类4. 类CFinalInherit同时继承了CInherit1和CInherit2//5. 如今要用CBase *p指针指向new CFinalInherit对象 代码如下:#include using namespace std;// 基类
2009-12-25 13:54:00
930
原创 域限定符解决子类中调用父类重名函数问题
如果一个类C继承了A和B,并且AB拥有一个同名同类型函数。而C没重写AB这个函数时,该会继承哪一个呢?还是连个都继承?如果两个都继承,该如何调用?看下面的例子代码: #include using namespace std;// 类 Aclass A{public: void show(){ cout<<"in A."<<endl; }};
2009-12-25 00:47:00
728
1
原创 二元函数与bind1st/bind2nd
最近看到bind1st,感觉很好玩的一个模板函数。其定义如下: // TEMPLATE FUNCTION bind1sttemplate inlinebinder1st bind1st(const _Fn2& _Func, const _Ty& _Left){// return a binder1st functor adapter typename _Fn2::fi
2009-12-25 00:07:00
858
原创 OpenGL 实现的粒子系统、自由摄像机及Billboard
重新回到OGL的感觉真好,尤其使用过一段时间的OGRE3D。好多东西都想自己去实现一下。目前在win32下使用OGL的进度,如下:(有些是很早之前做过的,在重新温习一下~) 1. CEGUI界面2. 帧率计算器3. 自有摄像机4. 天空盒5. 点与轴Billboard6. 粒子系统 目前粒子系统的参数,如下:(以后可能还得
2009-12-22 14:20:00
3879
原创 在Win32 OpenGL环境渲染CEGUI界面
OGRE3D的使用已经告一段落,又重新回到了最初的起点OPENGL。很喜欢在OGRE里那简洁的CEGUI,于是就试着在OPENGL里渲染了一下。过程很简单,CEGUI0.7.1的例子里就有对OPENGL的渲染可供参考。不过是用的GLUT,我只是把GLUT换成了WIN32窗口。 废话不多说了,看看截图(Demo8的layout):
2009-12-21 13:07:00
3271
原创 CG 网址
CG 酒吧论坛: http://bbs.cg98.cn/index.php 中国CG论坛: http://bbs.cgbbs.cn/ 飞特网: http://www.fevte.com/
2009-12-11 01:48:00
647
原创 一个未完成的 OGRE DEMO
最近为了找工作,花了一个多月,用OGRE3D写了一个小DEMO。目前还没完成,现在代码有8千行左右。下面是开发中用到的库:OGRE3D 1.6.4OISCEGUI 0.7.1FMODTheoraVideoPluginNxOgre素材来源: OGRE例子、网络(偶美术不行~~) 下面是截图:
2009-12-09 21:56:00
1849
4
原创 从OGRE纹理到CEGUI纹理 —— 使用RTT实现3D角色预览
最近重拾LUA,觉得这个语言太美了。怎一个“简单”了得。不过我现在还太探索它和CEGUI的配合使用问题。虽然LUA的语法半年前就基本掌握了(那是因为LUA最简单的就是语法了~~XD),可现在还得琢磨如何让它和CEGUI及我的程序进行数据共享。好让我的LUA脚本里的回调函数可以直接操作APP里的数据(不知道这样做安全性如何?不过,若不这样,LUA的功能就不能扩大,只停留在非交互模式)。
2009-11-05 14:43:00
3706
3
原创 关于尾递归调用消除
1. 尾递归,就是把递归函数中需要的“所有状态”通过参数传入下一次调用中。 于是本次方法中留在堆栈中的数据可以完全清除。2. 示例// 一般的递归调用,本函数并没有结束,还在栈上保留着信息。int fr(int n){ if(n<2)return n; return fr(n-1) + fr(n-2); // 这里返回的是值!}//
2009-11-04 15:25:00
1914
原创 OGRE 1.64 与 CEGUI 0.71 闲谈一刻
最近开始搞UI,去CEGUI官网下了最新的稳定版0.7.1,看DEMO。当然,看CEGUI的设计代码更有帮助。可惜以我现在的时间和条件,根本不允许啊~~等工作稳定以后,少不了要看CEGUI及OGRE的设计源码。 其实CEGUI的设计很轻便,看DEMO根本就是一种享受。一切都是那么的顺利,知道我想把0.7.1的库链接到我以前的DEMO中去的时候。问题出现了。OgreCEGUIRendere
2009-11-03 21:32:00
2290
12
原创 OGRE 中通过 TheoraVideoPlugin 实现视频播放
昨天搞到零点才弄出来效果。本来不知道,原来Theora是一个纯开源项目。对Linux支持比较好,所以他的安装也应该遵循“Linux软件包安装规范”。那就是“永无止境”的包依赖。。于是乎,编译TheoraVideoPlugin必须先编译libtheora(http://theora.org/),ptypes(http://www.melikyan.com/ptypes/),libogg和libvo
2009-11-02 10:35:00
2966
6
TheoraVideoPlugin 编译好的链接库
2009-11-02
glut API参考第三版
2008-10-05
clstab一个使用gtk编写的小玩意~
2008-10-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人