shader实现灰阶图

本文详细介绍了如何在Cocos2d-x中利用shader绘制灰度图像,包括cocos2d主线程的工作流程、Auto-batching机制,以及自定义shader的实现。通过设置顶点、纹理坐标和颜色,结合顶点着色器和片段着色器的代码,实现了将彩色图像转换为灰阶图的效果。
摘要由CSDN通过智能技术生成

1cocos主线程以及Auto-batching

AppDelegate app;//封装用于智能分化,完成初始化,载入资源、构造场景、生成精灵

Application::getInstance()->run();//启动主线程

 

 director->mainLoop();//分为场景渲染,和清理缓存池

 glview->pollEvents();

 

drawScene

1)优先处理输入事件(空实现,留接口)

2)默认定时器(负优先级,0,正优先级)。自定义计时器

3visit主渲染树(autobatcch)是使用group

4visit通知窗口

5)渲染,切换缓存区

 

 

visit:中序遍历二叉树,添加RenderCommand

 

遍历结束后执行Render():

排序RenderCommand为三组:负、0、正;

RenderCommand中为QUAD_COMMAND的将会进行autoBatch处理:

_batchedQuadCommands缓存池不断添加单个QuadCommand

当前的绘制命令绘制quad单元数加上现存的绘制单元数超过缓存池容量,则执行现存的绘制操作,并清理缓存池,之后添加命令至缓冲池中。

其余绘制类型如custombatchNode则是直接执行,不执行autoBatch

GroupCommand类型是又是一组绘制队列,将递归地执行上诉过程。



1、shader绘制灰度纹理

helloworld中增加变量:

cocos2d::CustomCommand m_customCommand;

void onDraw(const cocos2d::Mat4 &transform, uint32_t flags);

cocos2d::Sprite* m_pSprite;

cocos2d::V3F_C4B_T2F_Quad m_sQuad;

 

//cpp中代码

#include "HelloWorldScene.h"

USING_NS_CC;

static Texture2D * texture2d;

 

//--------------------------------------------------------

static const GLchar* s_szColorSpriteVSH = 

" \n\

attribute vec4 a_position; \n\

attribute vec2 a_texCoord; \n\

attribute vec4 a_color; \n\

\n\

#ifdef GL_ES \n\

varying lowp vec4 v_fragmentColor; \n\

varying mediump vec2 v_texCoord; \n\

#else \n\

varying vec4 v_fragmentColor; \n\

varying vec2 v_texCoord; \n\

#endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值