cocos2dx中使用自定义uniform变量
来源:互联网 发布:林清轩芦荟胶 知乎 编辑:程序博客网 时间:2024/04/28 00:24
cocos2dx引擎本身提供了一定数量的uniform
static const char * COCOS2D_SHADER_UNIFORMS = "uniform mat4 CC_PMatrix;\n" "uniform mat4 CC_MVMatrix;\n" "uniform mat4 CC_MVPMatrix;\n" "uniform mat3 CC_NormalMatrix;\n" "uniform vec4 CC_Time;\n" "uniform vec4 CC_SinTime;\n" "uniform vec4 CC_CosTime;\n" "uniform vec4 CC_Random01;\n" "uniform sampler2D CC_Texture0;\n" "uniform sampler2D CC_Texture1;\n" "uniform sampler2D CC_Texture2;\n" "uniform sampler2D CC_Texture3;\n" "//CC INCLUDES END\n\n";
但并不能满足我们所有的需要,这时就需要使用自定义uniform
首先写好我们的shader,带上自定义uniform变量
const char* vert = R"( attribute vec4 a_position; attribute vec2 a_texCoord; varying vec2 v_texCoord; void main() { gl_Position = CC_PMatrix * a_position; v_texCoord = a_texCoord; })";const char* frag = R"( varying vec2 v_texCoord; // 自定义uniform变量 uniform float custom; void main() { vec4 col = texture2D(CC_Texture0, v_texCoord); gl_FragColor = col*custom; gl_FragColor.a = col.a; })";
下一步就需要在程序中设置这个uniform变量的值,我们可以每一帧对他进行一些改变,从而产生一些动画效果。
GLProgram* p = GLProgram::createWithByteArrays(vert, frag);GLProgramCache::getInstance()->addGLProgram(p, "custom");auto sprite = Sprite::create("HelloWorld.png");addChild(sprite);sprite->setPosition(visibleSize.width / 2, visibleSize.height / 2);auto shaderState = GLProgramState::getOrCreateWithGLProgramName("custom");//设置自定义uniform变量的值shaderState->setUniformFloat("custom", 0.2f);sprite->setGLProgramState(shaderState);
0 0
- cocos2dx中使用自定义uniform变量
- OSG中uniform变量
- GLSL中in和uniform变量的使用
- Uniform中自定义按钮(Uiscript)
- Cocos2dx中tolua++如何使用自定义类
- cocos2dx中如何使用ttf自定义字体
- 自定义视图中使用自定义变量
- 自定义视图中使用自定义变量
- 自定义视图中使用自定义变量
- 自定义视图中使用自定义变量
- 自定义视图中使用自定义变量
- 自定义视图中使用自定义变量
- cocos2dx使用自定义shader
- cocos2dx lua中使用自定义类以及tolua++的使用
- cocos2dx lua中使用自定义类以及tolua++的使用
- 自定义cocos2dx中CCTextFieldTTF类,使用超方便
- 如何在cocos2dx中使用Lua创建自定义
- 在FastReport中使用自定义变量
- Zigzag
- DVM GC源码研究
- recovery: ASCII cpio archive (SVR4 with no CRC)——cpio格式的recovery解压缩和重新打包的方
- [绍棠] 学习网站
- 背包之01背包、完全背包、多重背包详解
- cocos2dx中使用自定义uniform变量
- android sdcard目录chmod无法生效问题
- sivelrlight 结合asp.net用于大文件下载
- 2016夏季练习——搜索
- Android IntentService使用全面介绍及源码解析
- 【JZOJ4586】Ned 的难题
- Android js和native交互的两种方法
- PTA 朋友圈【并查集的合并问题】
- 基础知识(十四)服务器搭建