- 博客(16)
- 收藏
- 关注
原创 shader与cg简介
1.what? shader? shader的定义,需要从显卡的渲染管线开始说起。 渲染管线是显卡内部处理图形信号相互独立的的并行处理单元。我们把顶点位置、法线、纹理坐标等数据参数提供出来,然后再定义光源,通过渲染管线,就可以得到一幅渲染出来的画面。早期的渲染管线只有固定渲染管线:即在提供给GPU待绘制的模型单元之后,程序的设计者是无法干预渲染过程的。后来,显卡商将可编程
2012-08-01 18:38:37
848
原创 游戏编程中的有限状态机
所谓定义:“有限状态机就是一个具有有限数量状态,并且能够根据相应的操作从一个状态变换到另一个状态,而在同一时刻只能处在一种状态下的智能体。”(来自google----《Android游戏开发大全》)游戏中的有限状态机是一个由多种状态组成的机制。他包括:1.状态:多种互斥的状态元素,某个实体同时只能处于一个状态之中2.刺激: 这个“刺激”可以影响状态的改变3.转换机制:
2011-12-29 01:32:21
2332
1
原创 ios audioplayer播放声音失败是由于最简单的错误
如题。。。网上下了某播放音频的demo工程,真机调试一切正常。自己照着写了一个,竟然播放不出任何声音,查询所有的代码,找不到不对的地方,一个很诡异的状况是:正常运行播放不了任何声音,单步调试到audio player播放的地方,声音竟然出来了。。。。。。难道是主线程中断了audio player的播放?AVAudioPlayer * avPlayer = [[AVAudioPlay
2011-12-23 01:29:50
2828
原创 cocos2d-x添加快速OBB碰撞检测
-by yuchenl原理: 根据 Stefan Gottschalk的理论(Collision Queries using Oriented Bounding Boxes, Ph
2011-08-03 15:16:41
1702
原创 二维数组与二维指针
1.二维数组的储存是线性的,可以通过一维指针的方式访问。如一下代码:int map[5][5] = {1,2,3,4,5,5,4,3,2,1,-1,-2,-3,-4,-5,-5,-4,-3,-2,-1,-2,-1,0,1,2};int *mapd = & map[0][0];则 map[i][j] == mapd[i*5+j]; 而利用二维数组线性存储的特性,可以将二维数组当作一维指针方便的在函数之间传递如:将一个二维数组赋值给一个动态二维数组,参数设置为一维指针fun( int* map,
2011-03-25 16:14:00
932
原创 cocos2d调用虚拟键盘
cocos2d没有自己的键盘输入(当然也不需要有,一个ios的游戏引擎做键盘干嘛。。。。。。),在网上查找资料,发现大家都是代码建立一个UITextField控件,通过激活此控件,来达到显示键盘的目的。总结如下:1.建立UITextField为了方便将来关闭键盘,我将此UITextField作为我的menu layer的一个成员。 @interface MainMenuLayer : CCLayer {IBOutlet UITextField *textField;}@property(retain,
2011-02-28 00:44:00
3062
2
原创 C++存储tga图片
网上有很多关于TGA图片读取的代码,但是还没有相关的存储代码,工作需要,自己写了一个。工作只要求到写32位,未压缩的,RGBA颜色格式的图片,所以channels没有设置参数,我这里默认是4了_void SaveTGA( const _char *filename, _dword width, _dword height, const _byte *data ){// 自定义写数据类型typedef unsigned char _pixel;// 打开文件FILE *savefile = fopen(fil
2011-02-25 18:01:00
1342
1
原创 cocos2d的多点触控
<br /><br />1:<br />StandardTouchDelegate协议,<br /> <br />@protocol CCStandardTouchDelegate <NSObject><br />@optional<br />- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;<br />- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)
2011-02-25 01:53:00
2372
原创 递归实现MFC TreeControl动态建树
void CFileView::BulidTreeView( HTREEITEM tree_node){//我的控制类MySingletonManager& my_manager = MySingletonManager::GetSingleton( );//通过名字找到我的对象MyStaff* my_staff = my_manager .SearchStaff(mTreeControl.GetItemText(tree_node).GetBuffer(0) );//遍历这个对象的所有孩子,并添加至Tre
2011-01-17 18:04:00
1567
原创 使用OgreMax自定义数据(CDATA)
<br />前提:<br />1.Ogitor附带的DotSceneLoader,其使用rapidxml进行xml解析;<br />2.OgreMax导出场景,导出的用户自定义以CDATA格式存在于生成的xml中。<br /> <br />实例:<br />1.编写OgreMax自定义数据{<br />我编写的自定义类型:路点<br /> <userDataTypes> <class name="WayPoint"> <data name="ID" type="int"/> <dat
2010-12-13 21:54:00
901
原创 利用Ogre的场景查询器做简单的物理检测
Ogre的场景查询器具有强大的功能,而合理地利用掩码QueryMask,能够完成在游戏中对诸如“道具”,“墙壁”,“敌人”的分类处理。场景查询器分为:光线查询(Ray Queries)、球体查询(Sphere Queries)、边界盒查询(Bounding-Box Queries)、边界平面查询(Bounding-Plane Queries)以及相交查询(Intersection Queries)。我利用主角的位置mBodyNode->getPosition(),以半径1.5建立一个球体,通过该球体
2010-11-15 17:41:00
1445
原创 Advanced Ogre Framework中的两个小瑕疵
<br />错误一:很不值得一提的一个小错误,但是毕竟也是一个错误,作者在GameState退出时没有将Current_Object指针置空,导致在返回MenuState之后,如果再次进入GameState,点击一下鼠标左键这段代码就会发作:<br /> if(m_pCurrentObject)<br /> {<br /> m_pCurrentObject->showBoundingBox(false);<br /> m_pCurrentEntity->getSubE
2010-11-14 15:56:00
1475
转载 mt.exe:general error c101008d(最终原因已查明)
<br />该错误为: <br /><br />mt.exe : general error c101008d: Failed to write the updated manifest to the resource of file "./Release/*****.exe". f <br />其最终原因已查明见最后一部分<br />上网找了一下,只有英文网页有相关讨论,懒得去翻译了。中文网页中倒是有一个,而且有解决办法,那就是在项目属性——配置属性——链接器——清单文件中, 把生成清单改成否就行了。 <
2010-11-08 21:44:00
750
原创 Google C++ 编码风格精简
头文件:1.头文件防多重定义define格式:___H_2.能使用前置声明尽量不用头文件包含3.只有当函数只有 10 行甚至更少时才将其定义为内联函数(注意虚函数,递归函数,以及使用了循环语句的函数)4.复杂的内联函数的定义, 放在后缀名为 -inl.h 的头文件中5.定义函数时,输入参数永远放在输出参数之前6.项目内头文件应按照项目源代码目录树结构排列7.Example.cc包含头文件顺序:Example.h,C系统文件,C++ 系统文件,其他库的h文件,本项目内h文件作用域:1.在.cc文件中, 允许甚
2010-11-08 17:40:00
1165
2
原创 CdialogBar的建立
1.加入普通的dialog类并与对应的dialogBar资源关联。 2.更改此类的继承关系 如: class LightDlg : public CDialog 改为: class LightDlg : public CDialogBar 注意对应的 IMPLEMENT_DYNAMIC , BEGIN_MESSAGE_MAP 等中的CDialog
2009-11-12 19:31:00
504
原创 关于CMainFrame的鼠标响应
今天碰到一个在工具栏处添加坐标显示鼠标当前位置的小问题。 前辈留下的代码的处理方式,是把Cmainframe中的工具栏权限直接改成了public,而后在CView中的Mousemove添加编辑。很直接的方法,我却觉得更改MFC代码的方式不大合适。 在网上查找了一些资料。发现如下: 1.Cmainframe确实是完全可以相应鼠标事件的。
2009-10-06 20:19:00
1723
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人