|
2012年1月1日
摘要:
古话有:人生不如意事者十之八九.依稀记得在我小宇宙爆发的那个奇点时刻,身上每颗青春痘都认为这是一句失败告白,显然处在浓烈的量子汤里,我并没有预见到可能的熱寂未来.如今最冲动的星光已跑到了150亿年前,我开挂钻虫洞貌似也看不到了呢.虽然熱寂并未到来,但近地轨道年复一年的寒冷也让我隐隐体会到了那句话的真义,谁能料到,引力这个小畜生,汤里连它的尾巴都不见踪影,如今连核力都被它锁在夸克里,我被俘虏成一颗卫星.这个现象原来叫做生活的漩涡.可是,2012毕竟已经到了,洪水没有来到,黑耀斑没有爆发,太阳系安在,据说暗能量挫败了暗物质的阴谋,宇宙仍在飞奔.管他熱寂冷寂,地球确实美丽,可是头顶灿烂的星空正好.. 阅读全文
摘要:
模拟艾尔之光的刀光,很相似. 1 实现随时间或帧速的控制. 参照ogre中的关于轨迹的一个实现:RibonTrail.该实现对于轨迹面片使用类似公告板的技术,面始终朝向摄像机.这不是我们需要的效果.我们需要刀光面片能够沿着刀面的方向展开.所以请忽略它的画法,使用它的整个逻辑结构即可,包括监听... 阅读全文
2011年11月4日
摘要:
纹理投影流程cg toolkit中关于纹理投影的例子一 主程序中执行的空间变换二 shader执行的render pipe处理1 建立视点矩阵eyePosition[3];//观察视点位置lightPosition[3];//光源位置,或投影视点位置center[3];//投影中心,是地形或模型上的一点up[3];上向量方向,一般为Y轴正方向 buildLookAtMatrix(eyePosition[0], eyePosition[1], eyePosition[2], center[0], center[1], center[2], ... 阅读全文
2011年10月24日
摘要:
编辑器使用ogre的singleton和loki的singleton,遇到了一个有趣的问题.问题是关以一个bug的.典型的qt的main函数如下:int main(int argc, char *argv[]){ QApplication a(argc, argv); XEditor w; w.show(); return a.exec();}QApplication是每个qt程序必须的.他应该最先构造,最后析构.上面代码没有问题,注意QApplication和XEditor(自定义ui类)都是在栈上定义的.写的过程中对XEditor使用了loki的singleton类... 阅读全文
2011年10月12日
摘要:
今天做编辑器的各种按键对应操作.listener使用了前些天的状态机.做的过程中发现了该状态机的缺点.无法跟踪过去的状态.比如希望能够根据曾经按过的最近3个按键判断对应哪个操作.当然总是是可以保存在一张链表或什么东西里的.但这样的话状态机相当于退化了.公车想到了这是个马尔可夫链相关的问题.回来google之,有基于马尔可夫链的状态机,多是作为一种概率状态机.比如搜索算法,语言翻译都会用到.备忘之. 对应于同一个事件,当前状态只能跳到唯一状态,局限性大,这样还是需要if-else来依据别的条件(如之前的2个状态)来判断,希望能避免这个. 另外,每个状态强制分为begin, on, end... 阅读全文
2011年10月8日
摘要:
打算做一个基于策略的状态机,不知道直觉准不准.先准备前期的知识.以下是<游戏编程精粹3>中实现的状态机.状态机 = 状态 + 机.machine驱动state.一般的,对于类似state概念的判断,我们简单的使用if-else或者switch来判断.那当我们可以有很多状态时,if-else或switch搭成的那一大坨代码中的每个判断分支里,就会看到很多相似的代码,比如这些状态所依附的对象,或者相似的计算语句等.很熟悉的: 1 if(state == a) 2 { 3 if(event_c) { do_c(); state = c; } 4 if(event_b) { do_b... 阅读全文
2011年10月7日
摘要:
GraphicOgreImpl具体render:View Code #ifndef __GraphicOgreImpl_H__#define __GraphicOgreImpl_H__#include <Ogre/Ogre.h>#include <Ogre/OgreSingleton.h>#include <boost/smart_ptr.hpp>class GraphicOgreImpl{public: GraphicOgreImpl(void); ~GraphicOgreImpl(); void init(HWND hwnd, size_t width, 阅读全文
2011年9月29日
摘要:
编译clanlib2.3.2出现如下错误:fatal error C1083: 无法打开程序数据库文件:“g:\..\pdb”google得到的方法:修改一下设置,就可以解决C2471:C\C++ | General | Debug Information format | C7 Compatible (/Z7)C\C++ | Code Generation | Enable String Pooling | Yes (/GF)Linker | General Debug Info | Yes (/DEBUG)------------------------------------------ 阅读全文
2011年9月13日
摘要:
面试中遇到的一些面试题记录之。1)玩家和电脑对战猜数。双方各随机一个数,根据它们的和及各自奇偶,大小判断。根据规则总结即大者为胜,要求电脑胜率为70%,不让玩家看出电脑作弊。当时一开始想的伪码为:seed(time)x = 0 //playery = 0 //computerr = random(100)x = random(100)y = random(100)if(r < 70) if( x > y) swap(x, y) 感觉不妥。 1) 调用了3次random(); 2) 当时无法判断每隔2次r之间的关联性是否很大。因为伪随机数的问题,如果用相邻的random()调... 阅读全文
摘要:
最后一个步骤是实现LogItem的集合,使用list实现。做的很简单,需要注意的是写入流(console或文件)这里尚未使用策略模板参数,而是是使用了一个静态类LogOutputPolicy,并且实际上也不该在LogQueue里使用它,应该在LogManager里使用较好。这里有些懒惰了,主要LogManager参数过多。先看LogOutputPolicy的代码:View Code #ifndef __LogOutputPolicy_H__#define __LogOutputPolicy_H__#include "stdafx.h"#include "LogCo 阅读全文
|