随笔分类 -  Programming

摘要: 每个人在看待同一件事情上,获得的信息是不一样的。因此,我只说说我看了到啥。 一、微信是个可怕的平台 二、有人在刻意推HTML5 三、神经猫推的不是神经猫,也不是HTML5,而是egret 不得不说,时代终究会变。 但我们保持一颗学习的心态,又有什么不能接受的呢……。 阅读全文
posted @ 2014-07-29 22:10 麒麟子MrKylin 阅读(2714) 评论(8) 推荐(5) 编辑
摘要:图片来自网络 思绪何来 昨天写了一篇关于更新方案的理论 游戏开发:通过路径搜索优先级来进行补丁升级(从端游到手游) 今天继续细化一下 由于新项目采用的是Quick-cocos2d-x,那我就直接给出我基于Quick-cocos2d-x-master( > 2.2.3 rc) 的更新方案吧 此更新方案 阅读全文
posted @ 2014-06-24 00:10 麒麟子MrKylin 阅读(3189) 评论(2) 推荐(3) 编辑
摘要:The Saga of Ryzom is a persistent massively-multiplayer online game (MMORPG) released in September 2004 throughout Europe and North America, localised in 3 languages so far. It has been developed by Nevrax since 2000, and was taken over by Gameforge in late 2006. The Nevrax team built Ryzom from scratch, starting with the Nevrax Library (NeL), made available as free software under the General Public License (GPL). On top of NeL, a server technology was created to handle an immersive virtual w 阅读全文
posted @ 2014-05-29 09:40 麒麟子MrKylin 阅读(558) 评论(0) 推荐(0) 编辑
摘要:http://blog.csdn.net/weiwangchao_/article/details/7047044基本设计概念和处理流程调用模型模仿COM组件接口模式,利用面向对象思想多态性polymorphism,调用方保存着被调用方的基础接口指针(interface or sink钩子)(Pure Virtual Function),调用方直接调用接口指针内声明的纯虚方法,而此纯虚函数的具体逻辑由该接口的派生类实现。示意图:基于事件驱动的数据处理模型在系统功能设计中,针对网络事件SocketEvent、数据库事件DatabaseEvent、定时器事件TimerEvent……的数据处理,建立 阅读全文
posted @ 2013-12-27 01:08 麒麟子MrKylin 阅读(1227) 评论(0) 推荐(0) 编辑
摘要:最近公司游戏正在准备上线,所以FlasCC也就没有研究了,偶尔有闲功夫,也是玩玩3DMAX和UNITY3D。 感觉不会3DMAX,是一种局限。 回到主题,记录一下镜面反射矩阵的推导。 在用Irrlicht和RTT做镜面效果的时候,用到了反射矩阵。 就是需要把摄相机镜像,渲染一个RT,贴到镜面模型上。这个其实还纠结了许久,因为之前做水面渲染的时候,水面是平的,很好计算摄相机在水面以下的位置。 但... 阅读全文
posted @ 2013-06-15 00:49 麒麟子MrKylin 阅读(2345) 评论(1) 推荐(0) 编辑
摘要:最近在用irrlicht做一个3D试衣间的小项目,为了给项目增添点花样,于是想实现一面镜子。 我记得D3D龙书上有一个使用模板缓冲区实现的例子。网上也有OPENGL实现的例子。 但这一次,我想用irrlicht的RTT实现一面镜子效果。 其实原理和水面反射原理是一样的, 只是没有加扰动而已 第一步: 阅读全文
posted @ 2013-04-05 00:54 麒麟子MrKylin 阅读(547) 评论(0) 推荐(0) 编辑
摘要:Reference to:Where to start for RTS games?Making RTS games,and etc.----------------------------------------------------------------------------3DGlestGlest is a 3D real-time strategy game. Fully customizable using XML and a set of tools.(SF)My compile steps ishereTA Springan open source project deve 阅读全文
posted @ 2013-02-01 17:44 麒麟子MrKylin 阅读(469) 评论(0) 推荐(0) 编辑
摘要:Android的环境搭建是相当麻烦,拆腾了很多次,这一次终于狠下心来,研究了三天。 可能不同的人遇上的错误不一样吧。 网上找来的文章也不能解决所有问题。 但最完整的一篇要算下面这个。它基本上描述出了我所遇上的所有问题。 让人死去活来的cocos2d-x安卓开发环境搭建(windows+eclipse+ndk 不用cygwin) http://www.cnblogs.com/ybgame... 阅读全文
posted @ 2012-11-01 22:46 麒麟子MrKylin 阅读(398) 评论(0) 推荐(0) 编辑
摘要:http://www.diybl.com/course/3_program/c/c_js/20100710/426527.htmlhttp://www.cppblog.com/lyricc/archive/2012/01/12/164071.aspx搞了几个跨Linux与Windows的项目,碰到很多问题,记下来,以供查考。另外,因为水平的原因,肯定错误在所难免,请读者一定指正。 如无其它说明,本文所指Linux均表示2.6内核Linux,GCC编译器,Windows均表示Windows XP系统,Visual Studio 2005 sp1编译环境。 下面大概分几个方面进行罗列:sock.. 阅读全文
posted @ 2012-10-09 14:01 麒麟子MrKylin 阅读(342) 评论(0) 推荐(0) 编辑
摘要:当我们要进行消息处理的时候,通常需要写出一系列的消息函数,然后再将这些函数指针赋值给一个函数指针数组。当要使用的时候,根据消息编号确定在数组中的位置。 在C++中,成员函数指针写着很不顺手。。于是做了一个基类。。这个基类有个限制,就是只能处理两个参数的消息处理函数。第一个是消息ID,第二个就是消息内容。不过多数情况下已经够用。。。#include "stdafx.h" #include iostream #include stdio.h #include assert.h enum EDataType { eData0, eData1, eData2, eData3, eData4 阅读全文
posted @ 2010-07-07 11:03 麒麟子MrKylin 阅读(330) 评论(0) 推荐(0) 编辑
摘要:#define toString( L )#L#define MakeString( M, L )M(L)#define $LineMakeString( toString, __LINE__ )#define Rem__FILE__ "(" $Line ") : --- 提示: "#pragma message(Rem) 阅读全文
posted @ 2010-06-24 16:14 麒麟子MrKylin 阅读(316) 评论(0) 推荐(0) 编辑
摘要:在微软的c/c++ 编译器中,增加了对于栈溢出进行检测的参数 “/GS”,在调试shellcode 的时候,发现vs2005 产生的code 和 vc6 产生的code 有些不同,才让我注意到这个问题。 写了这样的一个测试程序: void foo(const char * datas) { char szbuf[32]; strcpy(szbuf, datas); } 汇编的代码如下:00411F70 push ebp 00411F71 mov ebp,esp 00411F73 sub esp,0ECh 00411F79 push ebx 00411F7A push esi 00411F7B 阅读全文
posted @ 2010-05-09 15:07 麒麟子MrKylin 阅读(835) 评论(0) 推荐(0) 编辑
摘要:先看这样的代码1voidMyNew(int*p)2{3p=newint;4}56intmain()7{8int*p=NULL;9MyNew(p);10}开始写了一篇函数中分配内存的问题,通过说明他们产生了拷贝,而导致p不能成功分配。但并未提出事实根据,下面我们来仔细看看具体原因。我们需要弄清两点:1、main函数中的p与MyNew函数中的p是不是一样;2、如果不一样,是怎么导致了不一样的。第一点很好看,我们可以在编译器(VC环境,我用的是VS 2005)的监视窗口中跟踪p的地址。 在监视窗口中增加一个对 &p的监视,然后我们在int*p = NULL处添加一个断点。单步执行,停在MyNew函 阅读全文
posted @ 2010-05-05 09:03 麒麟子MrKylin 阅读(407) 评论(0) 推荐(0) 编辑
摘要:冒泡排序与选择排序的不同、快速排序与选择排序的结合 冒泡排序可以说是最简单的排序了。我们学习C语言循环的时候都会提到。可见这是一种浅而易懂的排序算法!但不见得这种算法就没用处。首先,他很容易理解,这样在各种教材中比较适合拿来“开门见山”。其次是他很稳定。 若明确知道即将排的数字很混乱,随机性很强,则用冒泡排序也未偿不可。 谁让他始终是O(n^2)呢。冒泡排序法代码:1voidBubbleSort(inta[],intl)2{3for(inti=0;il;++i)4{5for(intj=i+1;jl;++j)6{7if(a[j]a[i])8{9intt=a[i];10a[i]=a[j];1 阅读全文
posted @ 2010-05-04 23:59 麒麟子MrKylin 阅读(511) 评论(0) 推荐(0) 编辑
摘要:内存池实现有许多种,各有不同的优缺点。这里不是主要说内存池,只是觉得这个内存池中的指针用得很飘逸!template class T,int AllocSize = 50class MemPool{public: static void* operator new(size_t allocLength) { if(!mStartPotinter) { MyAlloc(); } //将当前指向空闲内存起始地址作为反回地址 unsigned char* p = mStartPotinter; //取出空闲区域前4字节的值,赋值给空闲地址 //因为前四字节中存放了下一个BLOCK 阅读全文
posted @ 2010-05-03 15:06 麒麟子MrKylin 阅读(336) 评论(0) 推荐(0) 编辑
摘要:只是为了能够让自己讲清一些事!大家都知道,如果想要在在C++的函数中分配内存,那么就只得使用指针的引用传递,或是二级指针如:void MyNew(int** p){ *p = new int;}void MyNew(int*& p){ p = new int;} 而通常我们在开始的学习中,都会写成 void MyNew(int* p){ p = new int;}为什么这样分配不会成功呢?原理很简单,就是形参传递时的拷贝。当p传入进MyNew的时候,函数内部会对其进行拷贝。而函数内部真正操作和分配到了内存的,就是那个考贝后的变量。偽代码如下:void MyNew(int* p){ int* t 阅读全文
posted @ 2010-04-27 22:42 麒麟子MrKylin 阅读(289) 评论(0) 推荐(0) 编辑
摘要:C++ 对象的内存布局2008-11-14 作者:陈皓 来源:csdn前言07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里一并对大家的留言表示感谢。这也是我为什么再写一篇续言的原因。因为,在上一篇文章中,我用了的示例都是非常简单的,主要是为了说明一些机理上的问题,也是为了图一些表达上方便和简单。不想,这篇文章成为了打开C++对象模型内存布局的一个引子,引发了大家对C++对象的更深层次的讨论。当然,我之前的文章还有很多方面没有涉及,从我个人感觉下来,在谈论虚函数表里,至少有以下这些内容没有涉及: 阅读全文
posted @ 2010-04-27 20:59 麒麟子MrKylin 阅读(544) 评论(0) 推荐(0) 编辑
摘要:C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家 一个清晰的剖析。 当然,相同的文章在网上也出现过一些了,但我总感觉这些文章不是很容易阅读,大段大段的代码,没有图片 阅读全文
posted @ 2010-04-26 09:19 麒麟子MrKylin 阅读(252) 评论(0) 推荐(0) 编辑
摘要:貌似是在《3D游戏编程大师技巧》上看到的这两个函数,当时觉得很牛耶,于是就记下来了,不过至今没有怎么用到,我想估计以后会有用吧。//内嵌汇编的用于4字节填充的函数inlinevoid Mem_Set_QUAD(VOID *dest, UINT data, int count ){ _asm { movedi, dest; edi指向目标内存      movecx, count;要移动的32位字数      moveax, data ;32位数据      repstosd ;移动数据     }//end asm}//end Mem_Set_QUAD//用于2字节(DWORD)数据填充的函 阅读全文
posted @ 2010-04-26 09:17 麒麟子MrKylin 阅读(332) 评论(0) 推荐(0) 编辑
摘要:Table 6.12. Constructors and Destructor of Lists Operation Effect listElem c Creates an empty list without any elements listElem c1(c2) Creates a copy of another list of the same type (all elements are copied) listElem c(n) Creates a list with n elements that are created by the default constru 阅读全文
posted @ 2009-03-31 13:26 麒麟子MrKylin 阅读(327) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示