Cocos2D-X 设计模式:二段构建模式

乍一看标题,大家可能会觉得很奇怪,神马是“二段构建模式”呢?

所谓二段构建,就是指创建对象时不是直接通过构建函数来分配内存并完成初始化操作。取而代之的是,构造函数只负责分配内存,而初始化的工作则由一些名为initXXX的成员方法来完成。然后再定义一些静态类方法把这两个阶段组合起来,完成最终对象的构建。因为在《Cocoa设计模式》一书中,把此惯用法称之为“Two Stage Creation”,即“二段构建”。

2014.6.1号更新:

Cocos2D-X 3.0以后的二段构造更纯粹了,它把所有类的构造函数、析构函数以及init方法全部变成protected方法。强制开发者只能通过create工厂方法来创建对象。这样做的好处有两个:一、可以更好地配合Cocos2D-X内部提供的基于引用计数的内存管理模型,因为create方法按照约定会返回一个autorelease对象。二、create工厂方法可以有参数,比如createWithFileName,createWithSpriteFrameName,这样比构造函数更具有可读性。因为构造函数的重载可读性真的很差。这一点,我特别喜欢Objective-C的中缀表达式语法,虽然要多写一些字符,但是可读性真的很棒。

继续阅读

OpenGL ES2.0教程:编写自己的shader(2)

上篇文章中,我给大家介绍了如何在cocos2d-x里面绘制一个三角形,当时我们使用的是cocos2d-x引擎自带的shader和一些辅助函数。在本文中,我将演示一下如何编写自己的shader,同时,我们还会介绍VBO(顶点缓冲区对象)和VAO(顶点数组对象)的基本用法。

在编写自己的shader之前,我觉得有必要提一下OpenGL渲染管线。
理解OpenGL渲染管线,对于学习OpenGL非常重要。下面是OpenGL渲染管线的示意图:(图中淡蓝色区域是可以编程的阶段)

继续阅读

Cocos2D-X设计模式:单例模式

本系列文章我将和大家一起来发掘cocos2d-x中所使用到的设计模式。
(老实说,这些文章都是老文章了,但是旧瓶装新酒,不管是对自己还是对他人都是有收获的)

声明:这里发掘模式只是我的个人爱好,通过这个过程,我希望能加深自己对于设计模式运用的理解。关于模式的学习,市面上已经有许多非常好的书籍了。比如《Head First设计模式》、GoF的设计模式,还有《研磨设计模式》等。如果读者对于设计模式完全不了解的话,建议先阅读上面至少一本书籍,了解设计模式之后再阅读本系列文章。这样大家才会有相互交流的共同语言。

为什么要发掘设计模式呢?因为设计模式本身就是人们在一些面向对象的软件系统里面发掘出来的,在一定的场景之下可以重用的解决方案。通过对模式的挖掘,我可以借此机会学习一下这些优秀的设计思想。因为我觉得,一个好的开源游戏框架除了能给我们开发者带来开发效率的提升以外,还应该被我们吸收其设计思想,这样它的价值才能完整。

继续阅读

OpenGL ES 2.0教程:你的第一个三角形(1)

前言

学习程序世界里面的任何一项技能都有一个HelloWorld,而OpenGL的HelloWorld就是自己画一个三角形。当然,在
cocos2d-x里面使用DrawPrimitives可以轻松画出一个三角形。但是,我们这一次希望只通过底层的图形API就能够绘制一个三
角形。

继续阅读