12 2011 档案

摘要:所谓static对象,其寿命从被构造出来知道程序结束为止,因此stack和heap-based对象都被排除。这种对象包括global对象、定义于namespace作用域内的对象、在classes内、在函数内、以及在file作用域内被生命为static的对象。函数内的static对象称为local static对象,其他static对象称为non-local static 对象。程序结束时static对象会被自动销毁,也就是他们的析构函数会在main()结束时被自动调用。 所谓编译单元(translation unit)是指出单一目标文件的那些源码。基本上它是单一源码文件加上其所含入的头文... 阅读全文
posted @ 2011-12-30 15:56 wen_dao_ 阅读(899) 评论(0) 推荐(0) 编辑
摘要:默认情况下,局部变量的生命期局限于所在函数的每次执行期间。只有当定义它的函数被调用时才存在的对象成为自动对象。自动对象在每次调用函数时创建和撤销。 局部变量所对应的自动对象在函数控制经过变量定义语句时创建。如果在定义时提供了初始化式,那么每次创建对象时,对象都会被赋予指定的初值。对于为初始化的内置类型局部变量,其初值不确定。当函数调用结束时,自动对象就会撤销。 形参也是自动对象。形参所占用的存储空间在调用函数时创建,而在函数结束时撤销。 自动对象,包括形参,都在定义它们的块语句结束时撤销。形参在函数块中定义,因此当函数的执行结束时撤销。当函数结束时,会释放它的局部存储空间。在函数结束... 阅读全文
posted @ 2011-12-29 12:24 wen_dao_ 阅读(2471) 评论(0) 推荐(0) 编辑
摘要:依然没成功,看到别人很容易的就跑起来了,我这里,这不行那不行,就像我最近的状态一样(睡的也挺早,起的也挺晚,就是没精神); 重新做一下hello-jni屡屡思路,hello-jni成功跑起来,cocos2d-x helloworld继续不行,发给别人竟然可以运行…… mark2011121816:22没修改什么东西,竟然跑起来了! attention:(配置完环境后) 如果加载本来就有android的配置就不用管这个create-android-project.bat(这个就负责生成android目录结构)。 在android目录下找到build_native.sh修改(这个的作... 阅读全文
posted @ 2011-12-28 12:30 wen_dao_ 阅读(420) 评论(1) 推荐(0) 编辑
摘要:今天下午把cygwin安装上,尝试把hello-jni跑了起来;不过当把cocos2d-x中的helloworld放到模拟器上时总是跑不起来(黑屏等待),不知什么原因!write by fgd 阅读全文
posted @ 2011-12-27 17:55 wen_dao_ 阅读(218) 评论(1) 推荐(0) 编辑
摘要:帧缓冲区 几乎每个图形程序的重要目标之一都是在屏幕上绘制图形。屏幕是由一个矩形像素数组组成的,每个像素都可以在图像的某一个点上显示一个某种颜色的微小方块。在光栅化阶段(包括纹理和雾)之后,数据就不再是像素,而是片段。每个片段都具有与像素对应的坐标数据以及颜色值和深度值。 如果顺利通过了这些测试和操作,片段值便可以转换为像素。如果顺利通过了这些测试和操作,片段值便可以转换为像素。为了绘制这些像素,我们需要知道它们的颜色(即存储在颜色缓冲区中的信息)。当每个像素的数据按照统一的方式存储时,存储所有像素的数据按照统一的方式存储时,存储所有像素的存储空间就叫做缓冲区。不同的缓冲区为每个像素存储... 阅读全文
posted @ 2011-12-26 18:15 wen_dao_ 阅读(5055) 评论(1) 推荐(0) 编辑
摘要:纹理贴图允许把一幅砖墙图像映射到一个多边形的表面上,并把正面墙画成单个多边形。纹理贴图能够保证当这个多边形变形或渲染时,映射到多边形表面的图像也能够表现出正确的行为。 纹理贴图是一个相当大的主题,并且具有相当程度的复杂性。在使用纹理贴图时,必须做出一些编程选择。初学者很可能会本能地把纹理理解成二维图像,但是纹理也可以是一维的,甚至是三维的。可以把纹理映射到一组多边形构成的表面上,也可以把它贴到曲面上,还可以在一个、二个或三个方向上(取决于纹理的纬度)重复应用同一个纹理来覆盖整个表面。另外,可以把纹理图像自动映射到物体上,用它表示被观察物体的轮廓线或者其他属性。有光泽的物体也可以进行纹理贴... 阅读全文
posted @ 2011-12-26 15:38 wen_dao_ 阅读(6596) 评论(1) 推荐(0) 编辑
摘要:开始前,先看一下这几个概念: 帧缓冲区:计算机显存储器的一部分,存放屏幕图像的内容。FrameBuffer是内核当中的一种驱动程序接口。这种接口将显示设备抽象为帧缓冲区。用户可以将它堪称显示内存的一个映像,将映射到进程地址空间后,就可以直接进行读写操作,而写操作可以立刻反映在屏幕上。 光栅化:光栅化就是把几何数据和像素数据转换为片段的过程。每个片段方块对应于帧缓冲区的一个像素。把定点链接起来形成直线或者计算填充多边形的内部像素时,需要考虑直线和多边形的点画模式、直线的宽度、点的大小、着色模型以及用于支持抗锯齿处理的覆盖计算。每个片断方块都将具有各自的颜色和深度值。 卷积:是一种像素过... 阅读全文
posted @ 2011-12-23 19:02 wen_dao_ 阅读(2297) 评论(0) 推荐(0) 编辑
摘要:视图 计算机图形的要点就是创建三维物体的二维图像(图像必须是二维的,因为它是在平面的屏幕上显示的)。但是,当我们决定怎样在屏幕上绘图时,必须用三维坐标的方式来考虑。人们在创建三维图像时经常犯的一个错误就是太早考虑在平面的二维屏幕上所显示的最终图像。我们要避免考虑屏幕上的像素是如何绘制的,而是要尽量在三维空间中想象物体的形状。我们需要在深入计算机内部的三维空间中创建模型,让计算机去计算哪些像素需要绘制。——这段话很有启发,可以让你知道一个大概的计算机三维到屏幕上二维图像的模型 把一个物体的三维坐标变换为屏幕上的像素坐标的三个步骤: 1.变换包括模型、视图和投影操作,他们是由矩阵乘法... 阅读全文
posted @ 2011-12-23 17:43 wen_dao_ 阅读(950) 评论(0) 推荐(0) 编辑
摘要:原先,不是很理解ndk和jni,认为ndk封装了jni,也写过一个helloworld的jni例子,今天查了查: 1.jni是java原先提供的调用c++/c的一种机制 2.ndk是google对于android提供的一种调用c++/c的一种机制。 类似于java虚拟机和dalvik的关系;此java非彼java;这是目前心中jni和ndk的概念。 配置android环境中(sdk,ndk-win32下还要模拟linux环境),比较慢,待续 阅读全文
posted @ 2011-12-22 13:54 wen_dao_ 阅读(425) 评论(0) 推荐(0) 编辑
摘要:虽然使用OpenGL可以绘制复杂、有趣的图形,但这些图形都是由几种基本图元构成的(达芬奇的作品都是使用画笔和画刷完成的)。 最抽象角度看,三种基本的绘图操作:清空窗口、绘制几何体和绘制光栅物体。光栅物体包括二维图像、位图和字符字体等。 OpenGL中,除非特别声明,否则调用绘图函数后,将立刻绘制指定的物体。这看似理所当然,但在有些系统中,首先建立一个要绘制的物体列表,然后命令图形硬件绘制列表中的物体。前一种方式被称为直接模式,OpenGL中默认采用这种模式。除直接模式外,还可以将命令存储在列表中,供以后使用。直接模式更易于编程,但显示列表的效率更高。 绘图补救工具箱(为什么叫这个名字... 阅读全文
posted @ 2011-12-21 11:44 wen_dao_ 阅读(5246) 评论(1) 推荐(0) 编辑
摘要:OpenGL图形系统是一个软件接口,让程序员能够创建交互式程序。 OpenGL编程指南第一章 概念:1.渲染,指的是计算机根据模型创建图像。模型,是由几何图元(点、直线、多边形)构成的,而几何图元是通过顶点来指定的。 2.最终渲染的图像由屏幕像素组成:像素(pixel)是显示器硬件能够放置到屏幕上的最小可视元素。有关像素的信息(如颜色)在系统内存中被组织为位面。位面(bitplane)是一块内存区域,为屏幕上的每一个像素存储一位信息,例如像素的红色分量值。位面构成了帧缓存,后者包含图形显示设备为控制屏幕上所有像素的颜色和亮度所需的信息。 第一个OpenGL实例: 1 ... 阅读全文
posted @ 2011-12-20 18:10 wen_dao_ 阅读(1281) 评论(0) 推荐(0) 编辑
摘要:头文件用于声明而不是用于定义 当设计头文件时,记住定义和声明的区别很重要的。定义只可以出现一次,而声明则可以出现多次。下列语句是一些定义,所以不应该放在头文件里:1 extern int ival = 10; // initializer, so it's a definition2 double fica_rate; // no extern, so it's a definition 虽然ival声明为extern,但是它有初始化式,代表这条语句是一个定义。类似地,fica_rate的声明虽然没有初始化式,但也是一个定义,因为没有关键字extern。同一个程序中有两个以上文 阅读全文
posted @ 2011-12-20 10:44 wen_dao_ 阅读(791) 评论(0) 推荐(0) 编辑
摘要:默认地,第一个枚举成员赋值为0,后面的每个枚举成员赋的值比前面的大1。 枚举成员是常量 用来初始化枚举成员的值必须是一个常量表达式。(常量表达式是编译器在编译时就能计算出结果的整形表达式);整形字面值常量是常量表达式,正如一个通过常量表达式自我初始化const对象也是常量表达式一样。 枚举成员值可以是不唯一的。 不能改变枚举成员的值。枚举成员本身就是一个常量表达式,所以可用于需要常量表达式的任何地方。 每个enum都定义一种唯一的类型 和其他类型一样,可以定义和初始化Points类型的对象,也可以以不同的方式使用这些对象。枚举类型的对象初始化或赋值,只能通过其枚举成员或同一枚举... 阅读全文
posted @ 2011-12-19 09:59 wen_dao_ 阅读(821) 评论(0) 推荐(0) 编辑
摘要:今天看代码想到一个问题,引擎在什么时候通过什么方法调用的opengl画出的图形?于是就在cocos2d-x中找到了draw,之后又查了点资料。 Like in any game engine there are 2 different methods to draw and update things. Draw Each node has a draw method. This method is called every frme. The purpose of this method is to draw and only draw the node, nothing more... 阅读全文
posted @ 2011-12-16 18:11 wen_dao_ 阅读(3774) 评论(0) 推荐(0) 编辑
摘要:1.层次过细是初学面向对象编程的程序员最容易犯的错误。(做android cosmo项目时曾犯过,而且还滥用设计模式;应该设计的尽可能简洁)2.好的c++程序员都会让头文件的依赖关系变得最小,合理地使用类声明,而不是包含进整个类的定义。3.好的c++程序员会把所有的数据都声明成private的,尽量在同一个类中暴露过多的public方法,而protected应该慎用,至少尽量不用在成员数据上。(为什么protected尽量不用在成员数据上呢?)4.作为良好的面向对象设计,继承类很少去扩展基类的功能,这样子类作为具体实现被隐藏在基类的接口之后,结构变得干净整洁。(做第一个项目cosmo时,继承用 阅读全文
posted @ 2011-12-16 16:41 wen_dao_ 阅读(190) 评论(0) 推荐(0) 编辑
摘要:why we need header files. 1.It speeds up compile time. As your program grows, so does your code, and if everything is in a single file, then everything must be fully recompiled every time you make any little change. This might not seem like a big deal for small programs (and it isnot), but when y... 阅读全文
posted @ 2011-12-15 11:15 wen_dao_ 阅读(1130) 评论(0) 推荐(0) 编辑
摘要:以前做java,字符集转转转,总是不得其道; IDE的编辑器可以设置字符集(假设是utf-8),你输入的字符显示不是乱码,假设显示 你好! 其对应二进制假设是 (1110),本质上也就是1110。 你不去保存字符集,程序是不会知道你用什么字符集编的码,只知道是 (1110)二进制而已。 所以要显示 你好! 你必须知道(1110)用的什么字符集,不然就是乱码(假如gb2312 中1110 是 不好!) 那么就显示 不好! 显然和你想得到的结果不一样。 文本编辑器,只能统一设置字符集,就像qq聊天时你只能设置所有文字的字体,单个字体的设置做不到(html可以)。可以在程序中你可以,你可... 阅读全文
posted @ 2011-12-14 16:06 wen_dao_ 阅读(163) 评论(0) 推荐(0) 编辑
摘要:windows下通过TexturePacker将单个的sprite放入 导出 niao.png和 niao.plistView Code 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 3 <plist version=&quo 阅读全文
posted @ 2011-12-13 16:02 wen_dao_ 阅读(8611) 评论(0) 推荐(0) 编辑
摘要:暂时只贴这个例子吧!给自己做个备忘录,8086汇编都忘的差不多了,现在连用c++组织一个大程序结构都组织不好,能用汇编组织起一个大程序更加不容易。学无止境啊,当写个小程序时你也可以想到操作系统怎么把它装载进内存的?回头是岸吧!(有个高中老师的名言“学海无涯,回头是岸”)找个突破口做好它,再触类旁通。现在最想的不是自己细节能把握的多好而是能够,把握一个清晰的程序结构。 1 int _tmain(int argc, _TCHAR* argv[]) 2 { 3 int i = 1; 4 _asm 5 { 6 mov dword ptr [i],2 7 ... 阅读全文
posted @ 2011-12-12 18:58 wen_dao_ 阅读(561) 评论(0) 推荐(0) 编辑
摘要:const定义一个常量,常量定义以后就不能被修改。 1 class A { 2 public: 3 int a; 4 int * b; 5 int &c; 6 A(): a(1), b(new int(1)), c(*new int(1)) {} 7 }; 8 9 10 int _tmain(int argc, _TCHAR* argv[])11 {12 //std::cout << sizeof(A);13 const A a_obj;14 //a.a = 1;15 //a.b = new int(2);16 a_... 阅读全文
posted @ 2011-12-12 17:51 wen_dao_ 阅读(279) 评论(0) 推荐(0) 编辑
摘要:CCTextureCache,读取图片当文件名一样时,直接返回内存而非在读取文件;所有图像有关的实现统一调用CCTextureCache类的单例对象,保证最少的系统IO操作,提高程序运行效率。 今天工作中有点小烦,不知干什么了?是我生活中太没有目标了吧!我怎么可以这样呢!转眼间工作快9个月了,当我不知干什么的时候,我可以看书啊,我可以一点点的看,一点点的敲,我可以不在乎别人怎么看,因为我不怕别人看错我。write by fgd 阅读全文
posted @ 2011-12-12 15:32 wen_dao_ 阅读(621) 评论(0) 推荐(0) 编辑
摘要:CCCallFuncN: 1 CCCallFuncN *instant = new CCCallFuncN; 2 instant->initWithTarget(this, callfuncN_selector(ActionCallFunc::callback2)); 3 m_grossini->runAction(instant); 4 5 void ActionCallFunc::callback2(CCNode* pSender) 6 { 7 CCSize s = CCDirector::sharedDirector()->getWinSize(); 8 ... 阅读全文
posted @ 2011-12-09 17:37 wen_dao_ 阅读(4046) 评论(1) 推荐(0) 编辑
摘要:个人分类类型(c++,引擎,opengl,算法 等 ) 标题 cpp XX_XX(名词)_XX(动词/名次)…… egn_cocos2dx ogl alg thk oth 16px字体显得太大,改为15px代码 默认字体 太小,改为13pxwrite by fgd 阅读全文
posted @ 2011-12-09 13:32 wen_dao_ 阅读(296) 评论(0) 推荐(0) 编辑
摘要:学习C++的输入输出,比起java来有种空虚的感觉,不会就这么少吧!转码也没见到!java是跨平台语言,之所以跨平台是因为java语言本身就带着一个平台,java运行在虚拟机之上;灵活是以不灵活为基础的,总会找到不灵活的那个点吧;C++标准库的输入输出是通过什么来实现的?操作系统?(若是的话所有商业操作系统必须给按照c++规范供它接口),bois?这个实现太复杂了吧! 这里想了解一下string和c的string的区别 c的string就是char数组不过,最后一位是'\0',为了兼容C语言,C++中所有的字符串面值都由编译器自动在末尾添加一个空字符串1 char *c_str 阅读全文
posted @ 2011-12-08 14:23 wen_dao_ 阅读(3523) 评论(0) 推荐(0) 编辑
摘要:看项目一个个的类的时候,犹如在一座大楼中,我转遍各个房间,却总是体会不到,此楼的结构怎样;有种“不识庐山真面目,只缘身在此山中”的感觉。前面学习中也学习了一下UML但是始终是没有亲身看过东西,做过东西;所以这样的学习只是给大脑有个简单UML印象。问到项目不容易看后九天说让我看UML;然后从app_delegate刚启动的位置一路跟下去,第一次只跟最上层,然后一次层层深入。 再看一下UML类图的教程,这里就不复制粘贴了。 阅读全文
posted @ 2011-12-07 09:55 wen_dao_ 阅读(239) 评论(0) 推荐(0) 编辑
摘要:今天本来想多写一些关于弹出窗口Touch捕获事件并屏蔽原来(弹出窗口下面的layer)layer的touch事件,但是不知如何写,掌握的知识感觉总是不够。 1.游戏中CCDirector的setAnimationInterval(1.0 / 30);但是在main_game_layer中schedule( scheduel_selector(MainGameLayer::Update), 1/60.0f); 为什么后面定义的时间可以比帧的时间更短,如上就是每一帧后都会Update两次,没显示出来私下里Update两次有用吗,这点我相当困惑;我没弄清FPS和各个逻辑的关系。 Frame ... 阅读全文
posted @ 2011-12-06 16:56 wen_dao_ 阅读(818) 评论(0) 推荐(0) 编辑
摘要:没做过c++项目,一上来看个大项目,还真不知怎么看,有种无从下手的感觉。那就像看书一样虽然,有些看不懂,先一个个的看一遍,再反过头来看时,一定会有收获。 1)头文件中都使用了一些预处理设施:如果预处理器变量未定义,那么跟在其后的所有指示都被处理,知道出现#endif.1 #ifndef XXX_XXX_H2 #define XXX_XXX_H3 ...4 #endif 头文件应该含有保护符,即使这些头文件不会被其他头文件包含。编写头文件保护并不困难,而且如果头文件被包含多次,它可以避免难以理解的编译错误。 2)#include <> 和 #include "": 阅读全文
posted @ 2011-12-05 11:45 wen_dao_ 阅读(1003) 评论(3) 推荐(0) 编辑
摘要:运行时库的选项有:多线程(/MT)、多线程调试(/MTD)、多线程DLL(/MD)、多线程调试(/MDd) 有时调用外部的一些库,这个选择不对,老编译不通过;c运行时库 库文件single thread(static link) ML libc.libdebug single thread(static link) mld libcd.libmultithread(static link)MT libcmt.libdebug multithread(static link) MTD libcmtd... 阅读全文
posted @ 2011-12-01 16:40 wen_dao_ 阅读(5263) 评论(0) 推荐(0) 编辑
摘要:基本概念: 场景(CCScence)层(CCLayer) 精灵(CCSprite) 导演 (CCDirector) 基本动作:基本动作的本质就是改变某个图形对象的属性:位置,角度,大小等; 动作与CCNode的关联:CCNode有一个方法叫runAction; 动作分类:瞬时动作、延时动作、动作速度。 瞬时动作:1.放置 2.隐藏 3.显示 4.可见切换 延时动作:1.移动到 2.移动 3.跳跃到 4.跳跃 5.贝塞尔 6.放大到 7.放大 8.旋转到 9.旋转 10.闪烁 11.色调变化到 12.色调变换 13.变暗到 14.由无变亮 15.由亮变无 (一直不明白 to和by... 阅读全文
posted @ 2011-12-01 12:14 wen_dao_ 阅读(944) 评论(0) 推荐(0) 编辑