// on "init" you need to initialize your instance
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !Layer::init() )
{
return false;
} Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin(); auto sp = Sprite::create("water.png", Rect(0,0, visibleSize.width, visibleSize.height));
addChild(sp);
sp->setPosition(Point(visibleSize/2)); auto TexCache = Director::getInstance()->getTextureCache();
auto wave2 = TexCache->addImage("wave1.png");
auto wave1 = TexCache->addImage("18.jpg");
wave1->setTexParameters(Texture2D::TexParams{GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT});
wave2->setTexParameters(Texture2D::TexParams{GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT});
auto glprogram = GLProgram::createWithFilenames("water.vsh", "water.fsh");
auto glprogramstate = GLProgramState::getOrCreateWithGLProgram(glprogram);
sp->setGLProgramState(glprogramstate); glprogramstate->setUniformTexture("u_wave1", wave1);
glprogramstate->setUniformTexture("u_wave2", wave2);
glprogramstate->setUniformFloat("saturateValue", 1.2); sp->setRotation3D(Vec3(-60,0,0));
return true;
}
#ifdef GL_ES
precision mediump float;
#endif varying vec4 v_fragmentColor;
varying vec2 v_texCoord; uniform sampler2D u_wave1;
uniform sampler2D u_wave2;
uniform float u_interpolate;
uniform float saturateValue;
float verticalSpeed = 0.3797;
float horizontalSpeed = 0.77;
void main() {
vec2 textCoord1 = v_texCoord;
textCoord1.x += verticalSpeed * CC_Time.x;
textCoord1.y += horizontalSpeed * CC_Time.x;
vec3 color = texture2D(u_wave1, textCoord1).xyz;
color += texture2D(u_wave2, v_texCoord).xyz;
if(color.x > saturateValue)
color = vec3(1.0);
else
color = texture2D(CC_Texture0, v_texCoord).xyz;
gl_FragColor = vec4(color, 1.0);
}

  


再优化了一下

最新文章

  1. ubuntu14 备份
  2. AD域修改组策略
  3. JavaScript强化教程——jQuery AJAX 实例
  4. Android成长日记-ContextMenu实现上下文菜单
  5. C++输入输出
  6. MyEclipse6.5注册码(转)
  7. 谈FTP服务器攻击技术及其展望 (修改中)
  8. JavaScript中函数参数的按值传递与按引用传递(即按地址传递)
  9. ASP.NET应用程序和ASP.NET网站所共有的文件: App_Browsers 等
  10. QCoreApplication::processEvents();的作用与TApplication::ProcessMessages的作用完全相同,但是没想到这种用法还有缺点
  11. 不同服务器之间使用svn钩子post-commit同步代码遇到的证书认证问题.md
  12. onmouseover 执行 ToolTip 控件
  13. C# 语言规范_版本5.0 (第7章 表达式)
  14. PHP 对MySQLI预处理的包装
  15. 【转】Linux 服务器安全配置
  16. 结构体addrinfo, sockaddr, sockaddr_in的区别
  17. 通过URL触发Jenkins构建
  18. 微信小程序cavas画图并保存
  19. cdqz2017-test11-奇诺之旅(拟阵)
  20. Win10解决无法访问其他机器共享的问题

热门文章

  1. 神经网络:卷积神经网络CNN
  2. JavaScript 中 2个等号(==)和 3个等号(===)之间的区别
  3. 《c程序设计语言》读书笔记-字符型0-9转为数字0-9
  4. 总结Selenium自动化测试方法(六)常见的异常错误处理
  5. JavaScript高级编程(一)
  6. plsql programming 18 包
  7. h-index
  8. [ionic开源项目教程] - 第13讲 Service层优化,提取公用Service,以及生活和农业两大模块的实现
  9. POJ 1037 (计数 + DP) 一个美妙的栅栏
  10. C语言之字节对齐