zoukankan      html  css  js  c++  java
  • (转)Cocos2dx-JS 在 Sprite 上使用 Shader

    //例如如下一个简单的变色程序,蓝色变红色 ,js 代码:

    1.  
      var url = "res/sb.jpg";
    2.  
      var sp = new cc.Sprite(url);
    3.  
      sp.setAnchorPoint(0,0);
    4.  
      this.addChild(sp);
    5.  
      this.shader = new cc.GLProgram("res/Shaders/example_Flower.vsh", "res/Shaders/example_Flower.fsh");
    6.  
      this.shader.retain();
    7.  
      this.shader.link();
    8.  
      this.shader.updateUniforms();
    9.  
      var program = this.shader.getProgram();
    10.  
      sp.shaderProgram = this.shader;

    VertexShader

    1.  
      attribute vec4 a_position;
    2.  
      attribute vec2 a_texCoord;
    3.  
      attribute vec4 a_color;
    4.  
       
    5.  
      #ifdef GL_ES
    6.  
      varying lowp vec4 v_fragmentColor;
    7.  
      varying mediump vec2 v_texCoord;
    8.  
      #else
    9.  
      varying vec4 v_fragmentColor;
    10.  
      varying vec2 v_texCoord;
    11.  
      #endif
    12.  
       
    13.  
      void main()
    14.  
      {
    15.  
      gl_Position = CC_PMatrix * a_position;
    16.  
      v_fragmentColor = a_color;
    17.  
      v_texCoord = a_texCoord;
    18.  
      }



    FragmentShader

      1.  
        #ifdef GL_ES
      2.  
        precision lowp float;
      3.  
        #endif
      4.  
         
      5.  
        varying vec4 v_fragmentColor;
      6.  
        varying vec2 v_texCoord;
      7.  
         
      8.  
        void main()
      9.  
        {
      10.  
        gl_FragColor = v_fragmentColor * texture2D(CC_Texture0, v_texCoord);
      11.  
        float r = gl_FragColor[0];
      12.  
        float g = gl_FragColor[1];
      13.  
        float b = gl_FragColor[2];
      14.  
        float a = gl_FragColor[3];
      15.  
        if(b > r && b > g && b > (r*0.5 + g*0.5)*1.5) {
      16.  
        gl_FragColor[0] = b;
      17.  
        gl_FragColor[2] = r;
      18.  
        }
      19.  
        }
         
         
        原文地址:https://blog.csdn.net/jiexiaopei_2004/article/details/50542860
  • 相关阅读:
    共享内存基本操作
    mmap 操作
    busybox 安装问题解决
    ubuntu apt-get failed
    live555 学习资料
    循环队列实现
    socket 聊天室实现
    socket 映射服务器--(可处理多客户端连接(fork),显示退出信息)
    socket 映射服务器程序
    vector和list插入性能对比
  • 原文地址:https://www.cnblogs.com/wodehao0808/p/9455697.html
Copyright © 2011-2022 走看看