自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

转载 opengl之vsh、fsh简易介绍+cocos2dx 3.0 shader 变灰

认识着色器 理解OpenGL渲染管线,对于学习OpenGL非常重要。下面是OpenGL渲染管线的示意图:(图中淡蓝色区域是可以编程的阶段)此图是从wiki中拿过来的,OpenGL的渲染管线主要包括:准备顶点数据(通过VBO、VAO和Vertex attribute来传递数据给OpenGL)顶点处理(这里主要由Vertex Shader来完成,从上图中可以看出

2015-06-24 22:34:57 733

转载 CCClippingNode特性

从本篇起介绍一些cocos2d-x的新功能,包括CocosBuilder动画等功能,还包括从2.1版本添加的一些新特性,本篇文章就介绍一下2.1中我非常喜欢的一个新特性--可以根据一个模板切割图片的节点--CCClippingNode。这个类提供了一种不规则切割图片的方式,在这种方式以前,我们可以使用纹理类自带的setTextureRect函数来切割矩形区域,这种方式就像是J2me的setClip

2015-05-28 16:59:48 440

转载 cocos2dx shader应用——sprite变灰

借鉴了多位博主的代码,谢谢!~~分享精神!使用版本:cocos2d-x2.2.1在实际项目中,经常需要用到灰色图像。比如按钮变灰,一般情况下,我们需要准备三张图,一张正常颜色图,一张按钮按下图,一张按钮变灰图。若此种类似情况过多,就会导致资源包过大,这显然不是我们愿意看到的结果。此种情况下,我们就可以考虑修改程序的方法,实现正常颜色图变灰,就可以减少资源图。基于上述情况,我

2015-04-22 17:43:46 872

转载 A* A星 算法 C语言 实现代码

【算法】【A星寻路】写在前面——    如果转载请注明出处,谢谢大家支持                                                        ——Forward                                                                  我的微博——秦京一梦QQ技

2015-04-13 21:05:05 1418

转载 如何制作一个基于Tile的游戏(2) Cocos2d-x 2.0.4

在第一篇《如何制作一个基于Tile的游戏》基础上,增加碰撞和拾取功能,原文《Collisions and Collectables: How To Make a Tile-Based Game with Cocos2D Part 2》,在这里继续以Cocos2d-x进行实现。有关源码、资源等在文章下面给出了地址。步骤如下:1.使用上一篇的工程;2.打开Tiled Map Edi

2015-04-08 18:35:40 467

转载 cocos2d-x 系统动画

Cocos2d-x提供的动画主要是瞬时动画和延时动画。瞬时动作就是不需要时间,马上就完成的动作。瞬时动作的共同基类是CCActionInstant。延时动作就是指动作的完成需要一段时间。因此,几乎所有的延时动作都使用执行时间作为第一个参数,它们有着共同的基类CCActionInterval。1.瞬时动画我实现x翻转和y翻转原图

2015-03-29 18:07:25 463

转载 Cocos2d-x 详解坐标系统

这篇博文将介绍一下在cocos2dx中的一些坐标系统概念:一、     (1)OpenGL坐标系Cocos2D-x以OpenGL和OpenGL ES为基础,所以自然支持OpenGL坐标系。该坐标系原点在屏幕左下角,x轴向右,y轴向上。(2)屏幕坐标系屏幕坐标系使用的是不同的坐标系统,原点在屏幕左上角,x轴向右,y轴向下。iOS的屏幕触摸事件CCTouch传入

2015-03-16 21:54:55 396

转载 cocos2d-x游戏开发 回调函数

cocos2d-x中有大量的回调函数的应用,主要有以下几类,看下CCObject.h中的定义typedef void (CCObject::*SEL_SCHEDULE)(float);// 用来调update typedef void (CCObject::*SEL_CallFunc)();// 用来自定义无参回调 typedef void (CCObject::*SEL_CallFu

2015-01-29 11:48:37 378

原创 2d-x 拷贝机制

CCObject是绝大部分cocos2d-x类的基类, 我们就从这里一步一步揭开cocos2d-x的奥秘.CCObject承担了两个重要的功能, 拷贝机制和内存管理.拷贝机制打开CCObject.h 首先看到的是类CCCopying, 而CCObject是从该类派生. 从这个意义上来讲CCCopying才是大部分类的基类.但CCCopying其实非常简单,

2015-01-28 11:32:12 397

转载 iOS开发——创建你自己的Framework

如果你想将你开发的控件与别人分享,一种方法是直接提供源代码文件。然而,这种方法并不是很优雅。它会暴露所有的实现细节,而这些实现你可能并不想开源出来。此外,开发者也可能并不想看到你的所有代码,因为他们可能仅仅希望将你的这份漂亮代码的一部分植入自己的应用中。另一种方法是将你的代码编译成静态库(library),让其他开发者添加到自己的项目中。然而,这需要你一并公布所有的公开的头文件,实在是非常

2015-01-27 15:38:32 865

转载 Cocos2d-x 使用TMX地图总结

首先我们需要知道,TMX地图的坐标为格子坐标,左上角为原点(0,0),而Cocos里面一般使用OpenGL坐标系,即左下角为原点(0,0)。我们可以这样子来转换TMX地图和OpenGL的坐标:Point HelloLayer::tiledCoorForPosition(const Point& position) //转成格子坐标{ Size mapSize = _t

2015-01-08 17:13:03 1047

转载 cocos2dx-多点触控

声  明       本教程仅用于初学cocos2dx同学使用,内容由本人(孤狼)学习过程中笔记编写,本教程使用cocos2dx版本为2.1.4。本教程内容可以自由转载,但必须同时附带本声明,或注明出处。gl.paea.cn版权所有。    hello,大家好,欢迎回到“和屌丝一起学cocos2dx”系列教程。上节我们说到了触控事件,不知道大

2015-01-08 17:09:24 540

转载 基于socket简单通信协议实现

1 场景当用socket进行进程通信,传输数据的时候,会出现以下一些情况:(1)完整的一条消息被系统拆分成几条发送,例如要发送一条消息:Hello World ,却被系统分成两条消息发送,分别为:Hello 和 World。(2)几条独立的消息被系统合成一条消息发送,例如要发送两条消息分别为:a memory from my past和it’s been a year,却被

2014-11-25 15:45:50 603

转载 状态机的实现

现在很多人在利用比较流行的开源游戏引擎cocos2d-x开发游戏,在游戏中免不了使用状态机,这里给大家一种我自认为好的状态机的实现O(∩_∩)O~。#ifndef BASESTATE_H #define BASESTATE_H template class BaseState { public: //BaseState(void){};

2014-10-06 23:33:21 505

转载 怎样制作基于Cocos2d-x的SLG游戏-第2章(双指缩放,单指拖动的实现)

上一章中,我们使用TiledMap制作了一张简单的地图,并把它加入到了程序中,紧接着本章将实现地图的双指缩放和单指移动功能。是不是觉得这一功能很接地气,呵呵,其实在很多类似的大地图背景游戏中这是非常常见和必要的一项功能,玩家可以通过滑动屏幕实现地图的滚动预览,同时可以通过两个手指的拉伸和聚拢实现地图背景的放大缩小。下面,就跟着我们一起来实现吧。双指缩放,单指拖动的实现

2014-09-12 17:22:03 2441

转载 Lua中的元表(metatable)与元方法(metamethod)

1.知道为什么1 + 1 = 2吗?为什么在Lua中,1+1会等于2呢?为什么数字和数字相加是合法的,为什么table和table相加就会报错?大家有想过这些问题吗?没错,规则,这一切都只是规则而已,Lua规定了数字之间可以进行加减乘除,而table之间则不可以。这是因为并没有table和table相加的概念。而在Lua中,进行这些规则限定的秘密就在于元表和元方法。

2014-09-12 17:09:21 566

原创 Lua的面向对象--类和继承

在Lua中的面向对象编程,相信目前学习Lua的大部分人都是为了开发手机网游吧。而且基本都是奔着脚本语言的热更新特性去的,所以全脚本开发变得十分流行。对于普及不太广的Lua(相对于C++、Java等主流语言),需要短时间上手开发游戏,对新手而言不算简单。所以大家才更习惯于继续用面向对象思想去折腾Lua吧!1.类的对象l

2014-09-12 17:06:49 510

转载 Lua的Metatable和OOP相关

什么是Metatable       Lua中Metatable这个概念, 国内将他翻译为元表. 元表为重定义Lua中任意一个对象(值)的默认行为提供了一种公开入口. 如同许多OO语言的操作符重载或方法重载. Metatable能够为我们带来非常灵活的编程方式.       具体的说, Lua中每种类型的值都有都有他的默认操作方式, 如, 数字可以做加减乘除等操作, 字符串可以做连

2014-05-21 23:34:16 556

转载 集成cocos2dx中的CHttpClient到lua中

不知道为什么cocos2dx中似乎没有把extensions/network里的HttpClient集成进去,自己试了一下DIY也不是很难,现总结如下首先CCHttpRequest中的setResponseCallback需要处理一下,因为这里我们需要的是一个lua的回调而并非c++的,处理方案参考CCSchduler中的scheduleScriptFunc,采用lua的handl

2014-05-13 22:54:59 580

转载 cocos2d-x 2.2.0 如何在lua中注册回调函数给C++

cocos2d-x内部使用tolua进行lua绑定,但是引擎并没有提供一个通用的接口让我们可以把一个lua函数注册给C++层面的回调事件。翻看引擎的lua绑定代码,我们可以仿照引擎中的方法来做。值得吐槽的是,这套流程在开发中几乎是不可避免的,而cocos2d-x竟然不把它作为一个公用接口暴露给开发者,而需要我自己动手,真是无奈。下面以一个简单的消息分发类为例子,演示如何

2014-05-12 23:33:13 1074

转载 预加载+CCSpriteBatchNode + CCSpriteFrameCache

CCTexture2D *texture = CCTextureCache::sharedTextureCache()->addImage("showroom.png"); CCSpriteBatchNode *batchNode = CCSpriteBatchNode::createWithTexture(texture); addChild(batchNode);

2014-05-12 22:20:38 554

转载 php实现socket

一、Socket 简介1、socket只不过是一个数据结构。2、使用这个socket数据结构去开始一个客户端和服务器之间的会话。3、服务器是一直在监听准备产生一个新的会话。当一个客户端连接服务器,它就打开服务器正在进行监听的一个端口进行会话。4、服务器端接受客户端的连接请求,那么就进行一次循环。现在这个客户端就能够发送信息到服务器,服务器也能发送信息给客户端。二、Socke

2014-04-15 22:45:21 557

转载 C语言的内存分配

文章一、C语言的内存分配模型1、程序代码区:存放函数体的二进制代码。  2、全局区数据区:全局数据区划分为三个区域。全局变量和静态变量的存储是放在一块 的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。常量数据存放在另一个区域里。这些数据在程序结束后由系统释放。我们所说的BSS段(bss segment)通常是指用来存放程序中未初

2014-04-13 22:10:52 425

转载 cocos2d-x 源码剖析(21)

今天有个朋友在开发中遇到一个字符渲染的问题,原来cocos2d-x不支持LTR和RTL混合字符的渲染,我当初压根没有意识到还有这个问题的存在。跟踪之后发现,cocos2d-x确实没有支持,而且用ttf改起来颇为费劲,关键是实现逻辑的地方太深了,没有看到Android的情况,要做好移植很难。不过用bmf改起来还是比较方便的,能直接修改C++代码,不用关心底层,能很好的移植。但是现实起来还是要做不少工

2014-03-10 14:56:18 761

转载 cocos2d-x 源码剖析(20)

上一节讲到CCTextureAtlas,从名字上来看可能会有误导,其实他继承之CCObject而不是CCTexture2D。但是他内部却包含一个CCTexture2D。所有的内容都是由下面这两个成员变量展开的:CC_PROPERTY(CCTexture2D *, m_pTexture, Texture)CC_PROPERTY(ccV3F_C4B_T2F_Quad *, m_pQuad

2014-03-10 14:53:24 697

转载 cocos2d-x 源码剖析(19)

这节开始讲CCNode,之前讲过一部分,却是介绍cocos2d-x的其他的内容。毕竟CCNode太过基础,而且大范围使用,不一点一点讲也不太现实。在cocos2d-x的开发中,没有特殊的情况,我很少继承CCNode之外的类。很多情况下,我先选择继承CCSprite来添加一些逻辑,但是在几次尝试之后发现太过愚蠢。所以我总是选择使用CCNode来作为容器,包含一个CCSprite做显示,其他的代码来做

2014-03-10 14:48:05 659

转载 cocos2d-x 源码剖析(18)

这节来讲纹理管理。我这里说的纹理有两个含义,一个是OpenGL中的纹理,还有一个就是CCTexture的。CCTexture是OpenGL中的纹理呈现,所以说到纹理时大部分是指CCTexture了。上次说到,我们绘制时,可以使用CCTexture中的OpenGL索引也就是name来进行纹理绑定。而且cocos2d-x使用CCTextureCache来进行统一管理。CCTextureCach

2014-03-10 14:42:33 622

转载 cocos2d-x 源码剖析(17)

这节本来是打算接着上一篇发的,但是那天实在太晚了就拖了下来。没想到昨天在邮箱里面赫然发现了《炉石传说》的封测兑换码,节奏立马就变了。昨天和今天体验了一把,策略性很强,不过如果你玩到一定阶段就是拼人品和卡牌了。我相信之后《炉石传说》之后会加入四人对战模式,双人对战策略略显单薄了些。今天连胜五把,解锁了2个新英雄,来篇文章纪念下。上一篇其实还没有将CCTexture讲完。cocos2d-x在很

2014-03-10 14:38:26 835

转载 cocos2d-x 源码剖析(16)

上一节讲了CCImage,这节讲CCTexture。毕竟我们就是从CCTexture讲岔到CCImage的。CCTexture负责纹理的加载和维护。他的函数分为三部分:初始化函数加载函数管理函数我们先来看加载函数,这是CCTexture的根本所在:12345678910111213141516171819202122232425262728293031323

2014-03-10 14:33:08 887

转载 cocos2d-x 源码剖析(15)

上节讲到了cocos2d-x在iOS上解压绝大数的图片格式为CCImage,然后再转化为纹理格式。其中有一个列外就是Webp格式。今天我们来看看Windows上面的情况,Android上的情况和Windows是类似的,都是使用第三方库来解码图片。按照道理来讲,Android上是可以采用类似iOS的技术,使用Android的系统库来解码图片,而且Android在4.0版本上已经开始原生支持Webp格

2014-03-10 14:32:22 1318

转载 cocos2d-x 源码剖析(14)

今天大老板看我加班辛苦,不由上来教育一番,我等屌丝立马重树三观。后又老爸介绍一相亲对象,虽说无甚期待也足够让想象里驰骋会儿了。心情略好,嗯来一篇吧。为了接上思路,我把前面几章看了一遍。自己水平不够,国语稀烂,新手要看懂确实不容易,老手也没必要看了。哈哈,略显尴尬。看个大概就可以了。好吧言归正传,自上一篇讲完Touch之后cocos2d-x的主逻辑就没什么类容了。我来整理下:co

2014-03-10 14:28:53 776

转载 cocos2d-x 源码剖析(13)

今天暖手宝已到,就是键盘还不太熟悉。躺在床上写博客的感觉就是好啊。上篇讲解了不同平台的touch事件是如何进入到cocos2d-x的,现在来看看cocos2d-x是如何对其处理的。同样的道理,我们先看看handleTocuhesBegin中的代码:1234567891011121314151617181920212223242526272829303132333435363738394

2014-03-10 14:28:18 996

转载 cocos2d-x 源码剖析(12)

今天来讲cocos2d-x的另外一个大头,Touch事件。由于cocos2d-x的多平台性,这部分有很多东西是用来支持多平台的。但是核心的东西还是只有一套。与之类似的东西前面讲过cocos2d-x程序的入口,还有后面要讲到的OpenGL Contex 也就是OpenGLView,这三部分紧密相连,而且随着平台特性不同而方式不同。总体上讲Desktop的方式都差不多,Mobile的方式也差不多。就用

2014-03-10 14:27:16 1015

转载 cocos2d-x 源码剖析(11)

好久没用动笔写博客了,今天是1024节,还是要表示下。而且今天检查邮箱发现了5个垃圾评论,觉得很高兴,也要来篇文章庆祝下。哈哈。时间隔得太久,我都不记得我讲到那里来了。原来是打算将几个特殊点的Action为大家结尾,最后一看源码,发现有点杂乱,待我整理好之后再写。今天来讲一讲CCScheduler。之前讲过,在ActionManager创建出来之后立马就加入到CCScheduler中去了,然后

2014-03-10 14:26:17 776

转载 cocos2d-x 源码剖析(10)

上一节讲CCActionInterval,这节讲CCActionInstant。同样为了方便,我们用CCPlace来讲解。作为了解过CCActionInterval的过来人来说,CCActionInstant意外的简单。还记得这两种Aciton之间的区别吗?前者需要一个duration,而后者调用一次就介绍了,自然也不用什么持续时间了。翻看源码,可以发现CCActionInstant和CCActi

2014-03-10 14:25:37 797

转载 cocos2d-x 源码剖析(9)

上一节讲了ActionManager,这节就顺势讲讲Action吧。下面是Action的继承图,这个结构看起来有点不对称,我也想不透作者是基于这种理由这样设计的,或许阅读晚源码之后会有所了解吧: 我们先从最简单的CCMove开始讲起。可以知道,CCMove继承至ActionInterval。ActionInterval有个特点,需要在一段时间内不断的调用step函数。与之对

2014-03-10 14:25:10 731

转载 cocos2d-x 源码剖析(8)

写到第7节的时候,突然觉得cocos2d-x还没有我想的那么大啊,或许在50节以内就要了结了。这节继续看看CCNode这个节点,主要部分是action。虽然CCNode有不少的action相关的函数,起作用的实际上是Actionmanager。这节虽说是从CCNode开始,但是真正的内容在ActionManager中:1234567891011121314151617181920212

2014-03-10 14:24:07 814

转载 cocos2d-x 源码剖析(7)

上节讲了一下CCNode的绘制链,但是其中遗漏了一个重要的点。还记得我说的那个调用层次很深的那个函数吗?void CCNode::insertChild(CCNode* child, int z){ m_bReorderChildDirty = true; ccArrayAppendObjectWithResize(m_pChildren->data, child); c

2014-03-10 14:20:21 620

转载 cocos2d-x 源码剖析(6)

上节讲了一些CCNode中值得注意的函数,这节来讲讲CCNode的绘制链。这节的内容在整个cocos2d-x中是很重要的,因为绘制链不仅仅是为了绘制而已。正如前面看到的,cocos2d-x的绘制源头在主循环中的drawscene,而其中真正承当绘制任务的是:// draw the scene if (m_pRunningScene) { m_pRunni

2014-03-10 12:58:08 676

转载 cocos2d-x 源码剖析(5)

今天打开cocos2d-x的3.0-pre-alpha0 版本,突然发现里面的变量名全变了。原来是老式的匈牙利命名法,现在的我说不出来头,但是确实表示着代码规范更符合现代C++的使用理念。前5篇讲了下cocos2d-x程序的生命周期和主循环。现在需要深入到各个模块中去看看细节。我们先从CCNode开始讲起。介于我的网速比较慢,我决定先生成一份本地文档。为了方便大家,特在此记录下来。coco

2014-03-10 12:52:50 824

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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