版权声明:本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名elloop(包含链接)
#前言
本文介绍了如何在cocos2d-x中使用自定义shader来实现混合颜色矩形的绘制。文中继续使用前一篇文章中定义的CustomDrawNode类来实现绘制过程,在其基础上派生出ColorfulRectangle
类,使用一对新的shader。
绘制的效果图如下所示:
绘制的实现
关于CustomDrawNode类的实现这里不再介绍,详情请参考前一篇文章《使用CCGLProgram实现自定义绘制》。下面给出着色器源码和彩色矩形绘制类ColorfulRectangle
的实现:
1.顶点着色器: colorful_rect_vert.glsl
2. 片段着色器:colorful_rect_frag.glsl
3. ColorfulRectangle的实现
4. 测试代码
测试代码在CustomDrawNode::loadUI()方法中:
遇到的问题
犯了一个低级错误,调试了半天才发现。
在colorRectangle的构造函数中,错误的把两个attribute的绑定常量都初始化为0,导致在draw方法中在使用glVertexAttribPointer(location, …)时候,顶点位置被颜色覆盖,绘制的结果就只有一个点,而不是矩形。
源码
CustomDrawNodePage.h
CustomDrawNodePage.cpp
在这里也能看到这篇文章:github博客, CSDN博客, 欢迎访问