zoukankan      html  css  js  c++  java
  • cocos2d 重写顶点着色语言

    bool CCShaderSprite::initWithFile( const char *pszFilename )
    {
     bool ret=false;
     do
     {
       ret=CCSprite::initWithFile(pszFilename);
    //
       CCGLProgram* shader = new CCGLProgram();
       shader->initWithVertexShaderFilename("example_Water.vsh","example_Water.fsh");
       shader->addAttribute(kCCAttributeNamePosition, kCCVertexAttrib_Position);
       shader->addAttribute(kCCAttributeNameColor, kCCVertexAttrib_Color);
       shader->addAttribute(kCCAttributeNameTexCoord, kCCVertexAttrib_TexCoords);
       shader->link();
       shader->updateUniforms();
       
       m_uniformPos     = glGetUniformLocation(shader->getProgram(), "f_point");
       //m_uniformTime    = glGetUniformLocation(shader->getProgram(), "f_time");
       m_uniformMapHeight  = glGetUniformLocation(shader->getProgram(), "f_height");
       m_uniformMapWidth  = glGetUniformLocation(shader->getProgram(), "f_width");
       //m_uniformMonsterTex  = glGetUniformLocation(shader->getProgram(), "CC_Texture1");

       this->setShaderProgram(shader);
       shader->release();
       CHECK_GL_ERROR_DEBUG();


       CCSize size = CCDirector::sharedDirector()->getWinSize();
       m_Pos.x = size.width*0.5;
       m_Pos.y = size.height*0.5;


     } while (0);
     return ret;
    }

    void CCShaderSprite::draw( void )
    {
     //--you can set Uniform in here
      CC_NODE_DRAW_SETUP();
     
       //getShaderProgram()->setUniformLocationWith1i(m_uniformMonsterTex,1);
       getShaderProgram()->setUniformLocationWith1f(m_uniformMapHeight,sUniformMapHeight);
       getShaderProgram()->setUniformLocationWith1f(m_uniformMapWidth,sUniformMapWidth);
       getShaderProgram()->setUniformLocationWith2f(m_uniformPos,m_Pos.x,m_Pos.y);
       //getShaderProgram()->setUniformLocationWith1f(m_uniformTime,m_RippleTime);
     //ccGLBindTexture2DN(1,m_MonsterTexture->getName());

     CCSprite::draw();
    }

  • 相关阅读:
    Oracle数据库的非归档模式迁移到归档模式
    对Dataguard的三种模式的理解
    RMAN中建立Catalog 用数据库的例子
    Oracle中实现dblink的作法
    expdp 简单例子
    Oracle单节点_Grid_Infrastructure_DB_安装过程图解(三/三)
    Oracle单节点_Grid_Infrastructure_DB_安装过程图解(一/三)
    Oracle单节点_Grid_Infrastructure_DB_安装过程图解(二/三)
    Oracle 安装过程中 File not found "WFMLRSVCApp.ear" 的原因
    基于Django的在线考试系统
  • 原文地址:https://www.cnblogs.com/yfceshi/p/6736799.html
Copyright © 2011-2022 走看看