- 博客(47)
- 资源 (7)
- 收藏
- 关注
翻译 QuickLuaTour
1. 注释单行注释:以--开头多行注释:第一行以--[[开始,最后一行以]]--结束 2. 类型Lua中的变量是没有类型的,但是值是有类型的。因此定义一个变量时不需要指定变量的类型。通过type函数可以获得值的类型字符串。Lua中值类型有下述几种:nil, booleans, numbers, strings, functions, userdata and threads
2014-02-17 01:18:12 915
原创 c++ 类型转换(c cast static_cast dynamic_cast)
1.隐式类型转换C++的隐式类型转换继承了C语言的基本数据类型的隐式转换,同时加入了派生类到基类的隐式转换。隐式类型的转换主要用在赋值或者作为参数传递的时候,在兼容的类型之间的转换。如果按照C++的思想,所有的操作都是函数(像+,=这些运算都是可以通过重载运算符来实现的),那总结起来就是一种用途:作为参数传递时:class Base{};class Derived:publ
2013-04-18 15:50:18 3126
转载 epoll 事件的检测
1、listen fd,有新连接请求,触发EPOLLIN。2、对端发送普通数据,触发EPOLLIN。3、带外数据,只触发EPOLLPRI。4、对端正常关闭(程序里close(),shell下kill或ctr+c),触发EPOLLIN和EPOLLRDHUP,但是不触发EPOLLERR和EPOLLHUP。关于这点,以前一直以为会触发EPOLLERR或者EPOLLHUP。再man e
2013-04-08 11:36:29 1945
转载 C++习惯用法之RAII
C++号称是多范式的通用编程语言, 但是RAII实际上已在C++编程技术中变成不可或缺的核心技术。 RAII几乎无处不在的身影不仅仅来自于C++之父的大力提倡, 更来自于这一技术本身的简单, 高效和几乎无所不能的适应面。如果您还没有听说过RAII的话, 那么我在这里再重新叙述一遍, RAII是下列英文短语的首字母缩写:Resource Acquisition Is Initialisati
2013-03-29 09:45:16 1026
原创 排序算法的c++模板实现
1. 快速排序快速排序的思想很简单,但是统计效率是在O(n*lgn)中最高的,付出的代价是它的最差排序复杂度也是最高的,是O(n2)的复杂度。当然,通过一定的方式进行改造,例如”三者取中法“可以将最差时间复杂度进行降低。快速排序是不稳定的,因为在选择到相等元素时,它的选择是直接跳过;可能你会想,可以选择把相等元素当做比它大的元素,其实还是不行。因为快速排序属于交换排序,交换的两个元素中间的位置
2013-03-24 16:54:39 1005
转载 FreeType使用步骤
1.初始化库FT_Library library;FT_Face face;FT_Error error = FT_Init_FreeType( &library ); 2. 加载相应的字体文件FT_New_Face( library, "/usr/share/fonts/truetype/arial.ttf", 0, &face );3. 设置字体的大小
2013-03-14 16:51:24 3422
转载 换行符(CR LF)
1 回车符号和换行符号产生背景:关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别。在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
2013-03-11 13:54:40 3051
原创 搜索树---排序二叉树和平衡二叉树的C++实现
1. 理解:1.1 排序二叉树 首先需要介绍的是数据结构,这里使用了模板来适应不用的数据类型: template class BSTreeNode{ public: ElementType element;/*二叉树中存放的数据*/ BSTreeNode *parent;/*节点的父亲节点*/ BSTreeNode *lchild,*rc
2013-03-10 23:21:18 1766
转载 查找文件命令---find, locate, whereis, which, type
1. findfind是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。find的使用格式如下: $ find - : 所要搜索的目录及其所有子目录。默认为当前目录。 - : 所要搜索的文件的特征。 - : 对搜索结果进行特定的处理。如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在
2013-03-08 14:27:21 1116
转载 ogre的天空----SkyBox,SkyDome和SkyPlane
Ogre提供了3种不同类型的天空:天空盒,天空穹和天空面。天空盒一个天空盒基本上是场景中一个围绕所有对象的巨大的立方体。使用方式如下:mSceneMgr->setSkyBox(true, "Examples/SpaceSkyBox");当我们调用setSkyBox的时候,我们可以设置几个有用的参数。第一个参数决定了是否启用天空盒,如果以后你想禁用天空盒,只需简单的调用:mS
2013-03-08 11:45:29 2181
转载 c++智能指针auto_ptr和shared_ptr
1.智能指针——auto_ptr auto_ptr 类可以用于管理由 new 分配的单个对象,但是无法管理动态分配的数组(我们通常不会使用数组,而是使用 vector 代替数组)。auto_ptr 在拷贝和赋值的时候有不寻常的行为,因此 auto_ptrs 不能被保存在 stl 的容器中。当 auto_ptr 离开了自己的作用域或者被销毁,由 auto_ptr 管理的对象
2013-03-07 16:08:54 1327
转载 c和c++标准
K&R C 1978年,丹尼斯•里奇(Dennis Ritchie)和布莱恩•柯林汉(Brian Kernighan)合作出版了《C程序设计语言》的第一版。书中介绍的C语言标准也被C语言程式设计师称作“K&R C”,第二版的书中也包含了一些ANSI C的标准。K&R C主要介绍了以下特色: 结构(struct)类型长整数(long int)类型无符号整数(unsigned
2013-03-07 11:22:54 888
原创 effctive c++ 学习
1. 构造函数和析构函数的执行顺序 结论:有继承关系时,类的构造函数的调用顺序:先父类,后子类;对于每个类,都是先初始化成员变量,再执行构造函数。析构函数的调用顺序,先子类,后父类;对于每个类,先执行该类的析构函数,再执行成员的析构函数。类中的成员按照声明的先后顺序执行构造函数,析构时顺序相反。 形象化的理解就是拿盖房子类比:先盖基础,再盖上层; 拆的时候先拆上层,后拆下面
2013-03-06 00:18:15 1126
转载 github删除repository
github中删除一个repository的功能不太好找,这里介绍一下: 一:首先点击进入你要删除的repository,点击settings,如下图: 二:将网页拉到下方,找到Deletethis repository 按钮,点击: 三:在弹出的对话框中输入你的repository的名字: 然后点击下
2013-03-01 10:56:14 1221
转载 sed命令
1. 简介:sed(stream editor,流编辑器)用来编辑文本的一个工具,主要使用正则模式匹配来完成其功能;sed并不会对文件内容进行修改,只是把处理过后的内容进行输出。2. 选项: -i : 直接修改文件内容 -n: 只显示匹配行3. 正则表达式符号解析: ^:一行的开始 $:最后一行或者一行的结束 \ \>:词尾
2013-02-20 23:33:02 941
翻译 场景管理
场景管理是3D引擎的一个核心部分,因为它是引擎的用户每天都要用到的一个特性。通常的做法是通过场景图(可能这样称呼不太准确)来实现,场景图就是一个数据结构,有:层次结构(火炬在英雄的手中),空间结构(一个兽人在英雄的旁边)以及状态结构(火炬当中的火是alpha混合的)。 这样一个结构的问题是,它试图成为一个万事通,但是最后在任何一方面都没有优势。互联网上已经有过许多对此的讨论,一般的共识是这样
2013-02-06 11:29:41 1451
翻译 场景树和空间图
场景树这是整个场景的一个层次结构的表示,通过一棵简单的树来实现:一个“节点”有一个父亲和任意数量的孩子。这个数据结构用来管理层次结构的物体变换(位置和方向),以及他们的动画。在FlExtEngine中,CSceneNode类拥有一个update方法,用于对node的变换进行更新;它还有一个accept方法,这样就可以使用访问者模式以实现更好的扩展性。空间图这是整个场景的一个空间关系
2013-02-06 05:20:36 5609
翻译 3D API
目前主要有两套3D API:Direct3D和OpenGL。我不想卷入哪个更加优秀的争论。他们都针对相同的底层硬件提供了接口,区别在于接口的质量和简单程度以及他们的实现(驱动),而不是功能特性。 微软的Direct3D提供了一套相当好的接口(第九版和第十版),但是深受函数调用问题模型之害:绘制函数需要强制内核上下文切换,这是一个相当大的性能开销。另外一个缺陷是它提供的API在版本之间变换,这
2013-02-05 14:17:54 885
翻译 3D 引擎做什么
3D引擎的任务是在屏幕上显示整个世界,更为精确的应该是显示用于感兴趣的部分。这意味着,3D引擎只需要显示整个世界的一个子集,这个子集是用户视野当中可见的部分。 所以,3D引擎的一个任务就是以尽可能快的速度找出整个游戏世界中的可见部分的这个子集。为了达到这个目的,我们将世界分成多个区域,每个区域中保存了该区域中包含的3D物体。然后,引擎会通过照相机的视点(camera point of vie
2013-02-05 11:30:48 937
翻译 什么是3D引擎
通俗的来说,3D引擎就是一个能够在屏幕上显示3D图像的软件。为达到此目的,现代的3D引擎都是使用一套API通过驱动或者运行时来和硬件进行交互。一个3D引擎可能是一个游戏引擎的一部分,但是游戏引擎也可以不需要3D引擎。 3D引擎使用的API较为底层,用来处理Vertex Buffers, Index Buffers, Shaders, Textures, Render Targets等;经过封
2013-02-05 10:54:34 3306
原创 游戏
“看到许多制作游戏的人根本不玩游戏真是让我大吃一惊。”――Bill Roper1. 暴雪公司(Blizzard) 暴雪娱乐是一家全球知名的电脑游戏和电视游戏软件公司,是属于维旺迪(Vivendi)的子公司。公司成立于1991年,总部位于Carifornia, Irvine。暴雪公司在电子游戏界享有极高的评价,在全世界都有大批的追随者。他的游戏产品包括魔兽争霸系列,魔兽世界系列,星际争
2013-01-11 15:17:08 2232
原创 动画分析
1. SceneNode Animation是根据mInitPosition等进行的,而不是根据当前的位置移动;2. 如果想设置为根据当前的位置进行移动,则需要在动画开始前设置setInitialState,将当前状态作为动画的起始状态;3. 动画结束后,不会恢复到原来的位置,而是动画结束时候的位置(说明动画的最后变换是写到了Node中的mPosition, mOrientation, m
2013-01-10 20:17:37 717
转载 grep 命令
用法:grep [option] pattern [file...]首先创建我们练习grep命令时需要用到的demo文件demo_file。$ cat demo_fileTHIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.this line is the 1st lower case line in this file.This
2013-01-06 11:01:03 664
原创 命名方法
俗话说的好,磨刀不误砍柴工。一致的命名方法犹如路标,给编程者清晰的编程体验。下面给自己以后的编程订立一下命名方法守则: 首先最重要的一点是,变量名要能够提供足够的信息,让其他人看到这个变量就大概知道这个变量名到底想表达什么意思。例如,enum CameraType m_type;这个变量名就不好,因为不知道这个m_type到底指的是什么东西的type。 其次是一些具体的命
2012-12-24 11:23:44 712
原创 windows编译记录
记录下,否则白做了。以后关于visual studio的信息都记录在这个地方吧,备查。 关键字:vs工程设置 windows库文件1.库文件 因为编译的是库文件,所以要对windows的库有所了解。静态库和linux系统中的库文件类似,也是包含了全部的obj文件;动态库有所不同,因为需要依赖一个静态库来让其他程序编译通过,运行时这个静态库则不需要。2.查看库文件内容. 动态库
2012-09-11 12:36:39 625
原创 cg
图形硬件发展历史:图形处理器(GPU)的发展历史简介 http://www.blogjava.net/chinqt/archive/2007/05/17/118027.html当前嵌入式设备的两大GPU比较:http://www.differencebetween.com/difference-between-powervr-sgx543mp2-and-vs-mali-400mp/
2012-08-23 01:01:28 533
原创 我的linux
1.打包/解包tar -zcvf work.tar.gz workz:.tar.gz 压缩 c:compress,仅打包 v:显示 f:filez可以换成j, 压缩成tar.bz2格式的压缩包仅仅打包和解压缩 gunzip xxx.gz gzip xxxunzip work.ziptar -xzvf work.tar.gz2. ps 命令:p
2012-08-03 17:00:20 1329
原创 通用基于TCP协议的C/S模型的代码
最近跟老师做一个项目,里面用到了客户端服务器模型。本科的时候也做过,但是那时候纯粹是为了完成任务,没有考虑什么东西,只是实现了单个客户和服务器的通信,发送一些图片什么的。看到老师写的代码很牛逼,直接拿以前的代码的动态库过来就可以使用了,而且工作的很好,因此有了模仿的想法。我的目的:构造一个灵活的服务器,顺便构造处理相同类型的客户端;服务器端:windows采用select 模型 和完成端口实现
2012-07-28 17:33:30 1718
原创 变长结构体
看到老师写的一个结构体很好奇,结构体的最后是一个长度为0的数组,当时感觉老师是不是写错了,这样写意义何在呢?都没有分配空间,貌似没有存在的意义。后来网上查了一下,其实这是在很多高级的东东里面都用到的东西,linux kernel, MFC, openoffice, 估计更多的地方都用到了。先说说我的理解:struct example{ __u16 tag_type;
2012-07-25 23:51:05 1162
原创 我的Makefil
1. Makefile-exeCC:=gccCXX:=g++RM:=rm -rfOUTDIR:=$(EXEDIR)EXENAME:=$(PROJNAME)EXESRCS:=$(COMPILE_FILES)CFLAGS:=$(COMPILE_FLAGS)LDFLAGS:=$(LINK_FLAGS)DEBUG:=YEXEOBJS:=$(patsubst %.cpp,%.oo,$(
2012-07-19 00:15:12 778
原创 我的OGRE学习记录
ogre cookbook:experiencelinux 下环境搭建:http://blog.sina.com.cn/s/blog_753f4e5f010141th.htmlwindows下:http://www.cppblog.com/Cunch/archive/2011/03/01/140770.html一、basic tutorial1:ogre三大基础
2012-07-17 13:46:29 850
转载 source insight设置
只能删除半个汉字的问题(需要一个superbackspace插件)① 复制入SourceInsight安装目录;* ② Project→Open Project,打开Base项目;* ③ 将复制过去的SuperBackspace.em添加入Base项目;* ④ 重启SourceInsight;* ⑤ Options→Key Assignments,将Ma
2012-07-13 19:06:44 695
原创 GIMP使用心得
GIMP真的是一个好东西,linux下的ps1. 创建一个透明背景的cursor创建一个图像,选择大小,设置背景透明-》打开一个cursor的图片,copy->到创建的图像上选择粘贴,然后稍微移动、放缩即可。2. 裁剪图片 这里有个裁剪的工具,直接使用即可,裁剪完成后双击裁剪区域即可。
2012-07-11 10:47:40 1663
原创 ogre particle system script分析
particle_system tutorial{ quota 2000//设置这个系统在某一时刻所允许包含的最多粒子数 //例子系统使用的材质,此系统中的全部粒子使用相同的材质每一个粒子可以通过使用它自己的颜色属性为材质附加颜色 material Examples/FlarePointSprite particle_width 3//在世界坐标系中的宽度值 particle_heig
2012-06-27 11:51:09 1313 1
原创 c语言不使用中间变量交换两个数
1. a^=b^=a^=b;2. a = a + b; b = a - b; a = a - b;网上听说有人在gcc下不使用编译优化的情况下第一种方法不起作用,特意尝试了下,结果是正确的。windows:visual studio 2005:通过linux:gcc 4.6.3 :通过strtok函数,用于分割字符串,第一次调用使用被分割字符串,后面使用null
2012-06-15 15:48:26 1227
原创 ogre 资源管理 resourcegroupmanager
1.一般步骤ResourceGroupManager::addResourceLocation(dir, type, group);...ResourceGroupManager::intializeResourceGroup(group);然后这个group就不能再加入资源的路径了2.手动解析文件http://egamesir.blog.163.com/blog/
2012-06-13 17:44:55 1626
原创 通用AVLTree
算法描述:在平衡的二叉排序树T上插入一个关键码为kx的新元素,递归算法可描述如下:㈠ 若T为空树,则插入一个数据元素为kx的新结点作为T的根结点,树的深度增1;㈡ 若kx和T的根结点关键码相等,则不进行插入;㈢ 若kx小于T的根结点关键码,而且在T的左子树中不存在与kx有相同关键码的结点,则将新元素插入在T的左子树上,并且当插入 之后的左子树深度增加1时,分别就下列情况
2012-06-08 08:40:40 613
原创 文件系统
yaffs:根据flash存储器的特点而设计的一个较为简单的文件系统,所有的数据都是按照块来存储的,yaffs1时有的块是512字节,现在yaffs2支持的一般都大于512字节,一般是2048字节,(以此为例讲解)。同时每个块后面还有64字节的数据用来存放tag信息,有id,文件大小,ecc校验值等。文件系统的逻辑结构是通过parentid来维持的,这个信息存放在一个文件的第一个块中的前面
2012-06-04 18:32:48 556
定时黑屏保护眼睛
2013-01-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人