Posts

为什么用命令行工具进行的提交没有在github主页上显示出来?

22 Jan 2016

#前言 本文介绍了如何解决使用命令行工具进行的提交没有在github个人主页上显示出来的问题。 如果不希望听那么多废话,请直接通过目录跳转到解决方法部分。

问题描述, 为了不让你的粉丝离开你,让自己“绿起来”

经常使用github的人大概都知道,在你的个人资料主页贡献图(Your Profile Contributions)上,记录着你使用github的贡献行为。你今天有“贡献”,那么代表今天的那个小格子就会变成绿色,否则就是一个空白。下图是一个例子: contri_diagram.jpg ...

阅读全文 ...


【cocos2d-x 2.x 学习与应用总结】14: 自定义shader绘制混合颜色的矩形

20 Jan 2016

#前言 本文介绍了如何在cocos2d-x中使用自定义shader来实现混合颜色矩形的绘制。文中继续使用前一篇文章中定义的CustomDrawNode类来实现绘制过程,在其基础上派生出ColorfulRectangle类,使用一对新的shader。 绘制的效果图如下所示: colorful_rectangle.jpg ...

阅读全文 ...


【cocos2d-x 2.x 学习与应用总结】13: 使用CCGLProgram实现自定义绘制

18 Jan 2016

#前言 本文总结了如何借助CCGLProgram来实现自定义绘制的节点类,使用自定义的顶点着色器和片段着色器,实现一个绘制彩色矩形的节点类。 绘制的效果图如下所示: custom_draw_rectangle.jpg ...

阅读全文 ...


【cocos2d-x 2.x 学习与应用总结】12: cocos2d-x预定义shader源码

17 Jan 2016

#前言 本文把cocos2d-x 2.x版本中预定义的所有shader源码贴出来,便于集中参考。作者的引擎版本是2.2.3.

预定义shaders总览

cocos中的预定义shader是定义在ccShaders.h/cpp这对文件中的,下面是所有预定义shader的名字:
extern CC_DLL const GLchar * ccPosition_uColor_frag;
extern CC_DLL const GLchar * ccPosition_uColor_vert;

extern CC_DLL const GLchar * ccPositionColor_frag;
extern CC_DLL const GLchar * ccPositionColor_vert;

extern CC_DLL const GLchar * ccPositionTexture_frag;
extern CC_DLL const GLchar * ccPositionTexture_vert;

extern CC_DLL const GLchar * ccPositionTextureA8Color_frag;
extern CC_DLL const GLchar * ccPositionTextureA8Color_vert;

extern CC_DLL const GLchar * ccPositionTextureColor_frag;
extern CC_DLL const GLchar * ccPositionTextureColor_vert;

extern CC_DLL const GLchar * ccPositionTextureColorAlphaTest_frag;

extern CC_DLL const GLchar * ccPositionTexture_uColor_frag;
extern CC_DLL const GLchar * ccPositionTexture_uColor_vert;

extern CC_DLL const GLchar * ccPositionColorLengthTexture_frag;
extern CC_DLL const GLchar * ccPositionColorLengthTexture_vert;

extern CC_DLL const GLchar * ccExSwitchMask_frag;
...

阅读全文 ...


【cocos2d-x 2.x 学习与应用总结】11: 理解CCGLProgram

16 Jan 2016

#前言 本文介绍了cocos2d-x中CCGLProgram这个类, 这篇文章假设读者已经了解OpenGL ES程序的基本渲染流程:顶点和片段着色器的源代码的编写、着色器的创建、program的创建、源代码绑定、编译、链接、OpenGL客户端-服务端传值等。CCGLProgram这个类正是对OpenGL ES渲染流程中涉及到着色器的编译、链接、传值等部分的抽象。 本文先总起介绍CCGLProgram所做的工作,然后分析其源代码中的关键实现,最后给出CCGLProgram的使用实例。

总体上认识CCGLProgram

CCGLProgram, 人如其名,它是一个OpenGL Program,通过一个顶点着色器和一个片段着色器代码(对于不支持shader即时编译功能的显卡,传入编译好的二进制着色器数据)来创建一个CCGLProgram. CCGLProgram内部做下面这些工作:
  • compileShader方法,内部调用glCreateShader, glShaderSource, glCompileShader等OpenGL API创建建顶点和片段着色器, 并编译
  • 调用glCreateProgram等OpenGL API完成program创建
  • link方法调用glLinkProgram完成program的链接
  • use方法调用glUseProgram以启用program
  • 定义了8个预定义的uniform,
...

阅读全文 ...