cocos2dx中使用GLProgramState
来源:互联网 发布:2017淘宝注册用户数 编辑:程序博客网 时间:2024/06/14 05:10
cocos2dx中GLProgram代表着色器程序,这个程序有输入也有输出,输入就是顶点属性,uniform变量的值等,输出就是显示。而GLProgramState表示的就是GLProgram和它的输入值。
这就涉及一个共享和独占的问题,如果两个sprite使用了同一个GLProgramState,那么输入设置就会相互干扰。比如下面的代码
auto sprite1 = Sprite::create("HelloWorld.png"); addChild(sprite1); sprite1->setPosition(visibleSize.width / 2, visibleSize.height / 2); auto shaderState1 = GLProgramState::getOrCreateWithGLProgramName("custom"); //设置自定义uniform变量的值 shaderState1->setUniformFloat("custom", 0.2f); sprite1->setGLProgramState(shaderState1); auto sprite2 = Sprite::create("bang.png"); addChild(sprite2); sprite2->setPosition(visibleSize.width / 2, visibleSize.height / 2); auto shaderState2 = GLProgramState::getOrCreateWithGLProgramName("custom"); //设置自定义uniform变量的值 shaderState2->setUniformFloat("custom", 10.0f); sprite2->setGLProgramState(shaderState2);
GLProgramState::getOrCreateWithGLProgramName(“custom”);返回的是同一个GLProgramState,那么对uniform变量的赋值就会相互干扰,后设置的覆盖先设置的,这时候就需要两个GLProgramState才能解决问题,更改后如下:
auto sprite1 = Sprite::create("HelloWorld.png"); addChild(sprite1); sprite1->setPosition(visibleSize.width / 2, visibleSize.height / 2); auto shaderState1 = GLProgramState::create(GLProgramCache::getInstance()->getGLProgram("custom")); //设置自定义uniform变量的值 shaderState1->setUniformFloat("custom", 0.2f); sprite1->setGLProgramState(shaderState1); auto sprite2 = Sprite::create("bang.png"); addChild(sprite2); sprite2->setPosition(visibleSize.width / 2, visibleSize.height / 2); auto shaderState2 = GLProgramState::create(GLProgramCache::getInstance()->getGLProgram("custom")); //设置自定义uniform变量的值 shaderState2->setUniformFloat("custom", 10.0f); sprite2->setGLProgramState(shaderState2);
这时就可以设置各自的uniform变量而不会产生干扰。
0 0
- cocos2dx中使用GLProgramState
- cocos2dx中使用多线程
- cocos2dx中使用中文
- Cocos2dx中使用多线程
- cocos2dx 中使用 opencv
- cocos2dx中如何使用HttpClient ?
- quick-cocos2dx中使用pomelo
- cocos2dx中使用触摸事件
- quick-cocos2dx中使用pomelo
- cocos2dx 中 ProgressTimer的使用
- Cocos2dx中ValueMap的使用
- cocos2dx中使用多线程(转)
- [cocos2dx]在cocos2dx中使用iconv库解决中文乱码
- cocos2dx Beta 版中使用 cocostudio
- cocos2dx中tiled地图的使用
- Cocos2dx中tolua++如何使用自定义类
- cocos2dx 使用CCString在UITextArea中输出%
- cocos2dx 中JNI native的使用
- QOS-3 Queue 队列机制
- 【uva12345】Dynamic len
- Android 隐藏标题栏
- poj 2152 Fire dp 树形dp+暴力 ★★
- Dynamic len 题解+代码 (带修改莫队算法模板)
- cocos2dx中使用GLProgramState
- 【web开发原理】B/S架构原理分析
- C++ primer (1) —— 基础
- Picasso 设置图拍呢
- QOS-4 Queue队列机制-2 CBWFQ and LLQ
- OTM1287A在MSM8909上的移植
- linux通信-共享内存
- js的onsubmit和onreset的使用和基本操作
- java之注释