追求游戏之道

知其然知其所以然

数据结构与算法(每天更新)

常用数据结构数据结构分类数据结构描述了数据元素之间的关系,通常分为集合、线性、树型、图型。集合描述了对象间没有直接的关系,线性指之间关系一对一,树型指的是一对多,图型指的多对多。数据结构常见的有表、队列、栈、树、散列、堆、图,每种数据结构都有多种表示,有的操作代码编写简单,有的编写麻烦。类如普通的...

2016-07-06 00:48:32

阅读数 848

评论数 0

opengl编程一(使用着色器)

openglopengl简介gl是一套图形编程API,是图形应用开发的工业标准接口,每个平台都有相应的实现。可视化的操作系统都提供了图形编程接口,通常这一系列的接口作为操作系统的一个系统服务,为客户提供窗口渲染。那为什么还用gl呢?系统提供的这些服务并不是针对gpu进行优化的,通常接口是为2d渲染...

2016-07-07 14:25:14

阅读数 6223

评论数 0

cocos2dx-CCSpriteBatchNode源码分析(VAO+VBO)

CCSpriteBatchNode简介CCSpriteBatchNode是用来一次渲染多个精灵的,这些精灵是CCSpriteBatchNode的孩子,并且使用同一个纹理,后面将详细分析CCSpriteBatchNode的孩子为什么用使用同一个纹理。多个纹理可以打包成一个纹理,然后通过精灵帧缓存载入...

2016-07-06 15:20:42

阅读数 1829

评论数 0

cocos2dx-CCControlButton源码分析

[TOC]CCControlButttonCCMenu简介CCControlButtton是按钮控件,有一个标签加背景图片构成,标签和背景可以只有一个存在。cocos的CCMenu以及提供了相应的空间功能,CCMenu同CCControlButtton一样派生于CCLayer,可以开启触摸。CCM...

2016-07-04 23:17:25

阅读数 2387

评论数 0

cocos2dx-实现CCDictionary的hash库uthash详解

uthash详解CCDictionary底层用的是uthash,追踪CCDictionary的接口,查看CCDictionary是如何利用uthash的接口的,以及uthash是怎么实现的。 下面是uthash的类图: tail方便uthash快速索引所有对象,每个bucket就是一个拉链...

2016-06-30 18:16:19

阅读数 3383

评论数 0

cocos2dx-深度解析plist文件(二)(CCSpriteFrameCache怎么从解析出的数据创建精灵帧的)

cocos2dx-深度解析plist文件(二)(CCSpriteFrameCache怎么从解析出的数据创建精灵帧的) 精灵帧的创建 CCSpriteFrameCache::addSpriteFramesWithDictionary(CCDictionary* dictionary, CCT...

2016-06-29 17:31:15

阅读数 2478

评论数 0

cocos2dx-深度解析plist文件(一)(游戏对象的数据如何从plist创建获取)

cocos2dx的精灵缓存在创建一组精灵帧,加载瓦片地图,普通动画的创建、骨骼动画等等都会通过plist(parameter list)文件获得需要的信息,建立器游戏中需要的类对象。本文从CCSpriteFrameCache读取plist创建精灵帧研究起。其中代码使用到了tinyXML2第三方库,...

2016-06-28 17:59:50

阅读数 6739

评论数 0

cocos2dx-详细剖析lua(如何与lua集成,如何导出lua api,如何与lua交互)

本文详解lua是怎么跟c/c++交互的;cocos怎么利用luac/c++交互的技术,导出lua api的供脚本使用;cocos如何进行c++与lua混合编程,cocos有哪些重要lua接口。 一、lua与c/c++的交互 1、lua简介 lua是由c语言编写,c/c++程序可以包含lua库,利用...

2016-06-26 15:59:28

阅读数 5038

评论数 0

cocos2dx-内存管理剖析(智能指针的局限与引用计数的选择)

一、常用内存管理计数 1、智能指针 cocos的内存管理没有用智能指针,智能指针,c++有相应的类型,代码如下: #include using namespace std; class Obj{ public: ~Obj(){ printf("destruct is cal...

2016-06-25 00:48:52

阅读数 2234

评论数 0

cocos2dx-精灵如何被渲染and纹理如何被管理、产生与销毁

一、精灵是怎么被渲染出来的 cocos渲染用了opengl。所有精灵顶点的位置,都是真实的在opengl世界坐标系中的大小。这些点在XOY平面上,z都为0,它们进行模型视图变换,再进行投影变换,投影空间进行除法运算规格化最后通过视口变换转化为窗口上的一点。 void CCDirector::set...

2016-06-23 22:34:26

阅读数 3659

评论数 0

cocos2dx-触摸分发分析

本文分析的是cocos2dx-2.2.2的触摸分发机制。 cocos利用底层的接口把消息包装发给了CCTouchDispatcher,ios平台就是用的ceglview这种视图,ios下一般应用编程我们都是用的系统提供的view,这些view可以接受触摸消息,显然ceglview也一样可以。同样也...

2016-06-22 18:10:06

阅读数 523

评论数 0

cocos2dx CCUserDefault

在使用CCUserDefault时发现了问题,代码如下 void testUserDefault(){ CCUserDefault *ud = CCUserDefault::sharedUserDefault(); const std::string path = ud->...

2016-06-21 17:33:37

阅读数 402

评论数 0

c++集锦

dynamic_cast: dynamic_cast主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换。 在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的; 在进行下行转换时,dynamic_cast具有类型检查的功能,比st...

2016-04-26 23:28:41

阅读数 303

评论数 0

动手实现2d游戏引擎(一)

本人准备分析cocos2dx的引擎·实现一个2d引擎名字叫gl02 下面是引擎一些基本类,后面会根据需要进行修改。 CCNode:引擎节点基类,它的代码如下,它的核心方法visit是渲染节点的入口,它会先处理zorder小的子节点,然后调用自身的draw方法渲染自己,在处理zorder大的节点,这...

2016-04-17 23:28:10

阅读数 2008

评论数 0

socket编程(一)使用SOCK_STREAM建立可靠通信

socket是我们用来进行网络编程的基本API,一般系统都提供了socket,unix以及类unix(Linux、mac)它们都提供了socket,不过不同平台还是有那点区别的,其中Windows区别最大了。本文的代码是在mac上测试通过的。 socket是一个应用层编程API,提供了tcp/ip...

2016-04-17 01:29:34

阅读数 8861

评论数 0

Mac快捷键

Command+C复制 Command+V粘贴 Command+Option+V剪切(剪切之前先复制)

2016-04-07 09:51:14

阅读数 217

评论数 0

数据结构与算法(二叉查找树)

头文件SearchTree.hpp #ifndef SearchTree_hpp #define SearchTree_hpp #include struct Node; typedef Node* SearchTree; typedef Node* Position; typedef in...

2016-03-27 18:45:55

阅读数 446

评论数 0

cocos2dx(一)-ios平台程序怎么跑起来的

cocos2dx的在不同平台上可以运行,上层主要使用c++来写的,但是跟平台相关的东西还需要用平台的默认语言跟平台提供的api来写的。下图是AppDelegata相关类图 ios中首先是main函数如下,它创建了AppController类,这是ios app的应用代理类,当app启动时,会调用这...

2016-03-17 15:26:05

阅读数 1538

评论数 0

objective-c感悟(四)class、catagory、class extension、optional

下面是oc的类的声明和实现,@interface看起来像是java里接口的声明,其实是oc类的声明方式,@implementation部分是类的定义。实例变量放在{}这对花或括号中,下面没有定义实例变量,花括号可以不加的。@property是属性,这里就不介绍了,前面有介绍。方法前的-号说明它是一...

2016-03-17 11:21:56

阅读数 767

评论数 0

闭包分析:lua function,oc 代码块可以产生闭包.c++lambda不能产生闭包

什么是闭包?这个问题说简单挺简单的,但是一般讲了之后跟没讲一样。就拿下面的lua代码看一下。 local function getCallBack() local x = 1 return function() x = x + 1 print(x) end end local fu...

2016-03-16 17:25:34

阅读数 296

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭