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();

}

cocos2d 重写顶点着色语言的更多相关文章

  1. OpenGL12-shader(GLSL)着色语言2-(参数传递)(代码以上传)

    上一篇中介绍了如何使用shader,用来一个最简单的shader,计算顶点的位置,调用了 OpenGL 顶点着色语言中的内置变量对顶点进行操作,这一例程中,将展示如何将应用层 的数据传递到shader ...

  2. OpenGL ES 着色语言

    OpenGL 着色器中使用的是着色语言GLSL.着色语言源自C语言,提供了丰富的原生类型,如向量.矩阵等,还有大量的内建函数,这在处理3D图形时可以更加高效.易用.下面是整理的是OpenGL ES2. ...

  3. OPENGL学习笔记整理(五):着色语言

    有些事情本身就是十分奇怪的.在传统上,图形硬件的设计目的是用于快速执行相同的硬编译指令集.不同的计算步骤可以被跳过,参数可以被调整,但计算本身确实固定不变的.然而,随着技术的发展,却越来越变得可以编程 ...

  4. OpenGL ES 3.0顶点着色器(二)

    #version es uniform mat4 u_mvpMatrix; in vec4 a_position; in vec4 a_color;out vec4 v_color;void main ...

  5. Obj模型功能完善(物体材质,光照,法线贴图).Cg着色语言+OpenTK+F#实现.

    这篇文章给大家讲Obj模型里一些基本功能的完善,包含Cg着色语言,矩阵转换,光照,多重纹理,法线贴图的运用. 在上篇中,我们用GLSL实现了基本的phong光照,这里用Cg着色语言来实现另一钟Blin ...

  6. GLSL着色语言学习。橙皮书第一个例子GLSL+OpenTK+F#的实现。

    Opengl红皮书有选择的看了一些,最后的讲着色语言GLSL的部分看的甚为不理解,然后找到Opengl橙皮书,然后就容易理解多了. 在前面,我们或多或少接触到Opengl的处理过程,只说前面一些处理, ...

  7. OpenGL12-shader(GLSL)着色语言1(代码已上传)

    OpenGL着色语言(GLSL――OpenGL Shading Language)是用来在OpenGL中着色编程的语言, 也即开发人员写的短小的自定义程序,他们是在图形卡的GPU (Graphic P ...

  8. 着色语言(Shader Language)

    摘抄"GPU Programming And Cg Language Primer 1rd Edition" 中文名"GPU编程与CG语言之阳春白雪下里巴人" ...

  9. DirectX9:高级着色语言(HLSL)

    一.简介 高级着色语言(High)可以编写顶点着色器和像素着色器,取代固定功能流水线中的部分功能,在图形卡的GPU(Graphics Processing Unit,图形处理单元)中执行 注意:如果图 ...

随机推荐

  1. GIT(5)----常用命令:新分支,切换,删除,远程推送,标签,日志

    常用命令 1.新分支 创建新分支:git branch <branch_name> 创建分支并切换到新的分支上:git checkout -b <branch_name> 2. ...

  2. WPF中删除打开过的图片

    在WPF中,当我们删除打开过的图片时,往往会遇到"...无法删除,文件正在被另一个进程使用"的异常.即使当前文件是打开后关闭过的也不行. 这个问题的原因很简单,是因为WPF的缓存策 ...

  3. jquery.uploadify 使用过程

    HTML: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"& ...

  4. 运用Android ROM Manager应用安装ClockworkMod Recovery的详细教程

    在安装ClockworkMod Recovery恢复模式之前,建议先认识下Google Android平台的ClockworkMod Recovery恢复模式 对于Android ROM Manage ...

  5. DU 4609 3-idiots FFT

    题意还是比较好懂. 给出若干个木棍的长度,问这些木棍构成三角形的可能性. 那么公式很容易知道 就是这些木棍组成三角形的所有情况个数 除以 从n个木棍中取3个木棍的情况数量C(n, 3) 即可 但是很显 ...

  6. MySQL:按前缀批量删除表格

    想要实现mysql>drop table like "prefix_%" 没有直接可用的命令,不过可以通过mysql语法来组装, SELECT CONCAT( 'DROP T ...

  7. java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决方式

    昨天整理桌面的时候将桌面的一堆文件移动到F盘去了,结果导致原来建的一些项目名称所有出现红色感叹号,打开一看,原来是由于我把hibernate的那些jar包移走了.导致user library里那些ja ...

  8. win7无线网络共享

    一.最简单的方法: 1.使用360安全卫士 2.安装一个驱动人生 二.手工设置,参考:http://www.jb51.net/os/windows/63472.html

  9. python笔记25-mock-server之moco

    前言 mock除了用在单元测试过程中,还有一个用途,当前端开发在开发页面的时候,需要服务端提供API接口 此时服务端没开发完成,或者说没搭建测试环境,这个时候前端开发会自己mock一个api服务端,自 ...

  10. Selenium2+python自动化61-Chrome您使用的是不受支持的命令行标记:--ignore-certificate-errors

    前言 您使用的是不受支持的命令行标记:--ignore-certificate-errors.稳定性和安全性会有所下降 selenium2启动Chrome浏览器是需要安装驱动包的,但是不同的Chrom ...