Cocos2d-x   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了【玩转cocos2d-x之四十】如何在Cocos2d-x 3.0中使用opengl shader?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
有小伙伴提出了这个问题,其实gLProgramCocos2d-x引擎自带了。完全可以直接拿来用。

先上图吧。使用opengl前后的对比:@H_607_6@


@H_607_6@

@H_607_6@

@H_607_6@

@H_607_6@

1.在cpp中使用openGL shader。

(1)添加gray.vsh和gray.fsh到资源目录(见附件)。
(2)添加如下代码:

@H_607_6@

@H_772_31@@H_607_6@

  1. boolHelloWorld::init()
  2. {
  3. if(!Layer::init())
  4. returnfalse;
  5. }
  6. izevisibleSize=Director::geTinstance()->getVisibleSize();
  7. autosprite=Sprite::create("HelloWorld.png");
  8. sprite->setAnchorPoint(Point(0.5,0.5));
  9. sprite->setPosition(Point(visibleSize.width/3,visibleSize.height/3));
  10. this->addChild(spritE);
  11. graySprite(spritE);
  12. true;
  13. voidHelloWorld::graySprite(Sprite*spritE)
  14. {
  15. if(spritE)
  16. GLProgram*p=newGLProgram();
  17. p->initWithFilenames("gray.vsh","gray.fsh");
  18. p->bindAttribLOCATIOn(GLProgram::ATTRIBUTE_NAME_POSITION,GLProgram::VERTEX_ATTRIB_POSITION);
  19. p->bindAttribLOCATIOn(GLProgram::ATTRIBUTE_NAME_COLOR,GLProgram::VERTEX_ATTRIB_COLOR);
  20. p->bindAttribLOCATIOn(GLProgram::ATTRIBUTE_NAME_TEX_COORD,GLProgram::VERTEX_ATTRIB_TEX_COORDS);
  21. p->link();
  22. p->updateUniforms();
  23. sprite->setShaderProgram(p);
  24. }

@H_607_6@

@L_944_5@@H_772_31@2.在js中使用opengl shader.

(1)添加gray.vsh和gray.fsh到资源目录。
(2)添加如下代码:

@H_607_6@

@H_607_6@

[javascript]
    varHelloWorldLayer=cc.Layer.extend({
  1. sprite:null,
  2. ctor:function()
  3. this._super();
  4. varsize=cc.director.getWinSize();
  5. this.sprite=cc.Sprite.create(res.HelloWorld_png);
  6. this.sprite.attr({
  7. x:size.width/2,
  8. y:size.height/2,
  9. scale:0.5,248)"> rotation:180
  10. });
  11. this.addChild(this.sprite,0);
  12. graySprite(this.spritE);
  13. true;
  14. }
  15. });
  16. functiongraySprite(spritE)
  17. varshader=newcc.GLProgram();@H_696_328@//cc.GLProgram.create("gray.vsh","gray.fsh");
  18. shader.retain();
  19. //shader.initWithByteArrays("res/gray.vsh","res/gray.fsh");
  20. shader.initWithFilenames("res/gray.vsh","res/gray.fsh");
  21. shader.addAttribute(cc.ATTRIBUTE_NAME_POSITION,cc.VERTEX_ATTRIB_POSITION);
  22. shader.addAttribute(cc.ATTRIBUTE_NAME_COLOR,cc.VERTEX_ATTRIB_COLOR);
  23. shader.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD,cc.VERTEX_ATTRIB_TEX_COORDS);
  24. shader.link();
  25. shader.updateUniforms();
  26. sprite.setShaderProgram(shader);
  27. }

附件:@L_262_7@
翻译自:
1. http://www.cocos2d-x.org/forums/6/topics/49035
2. http://www.cocos2d-x.org/forums/19/topics/49038

大佬总结

以上是大佬教程为你收集整理的【玩转cocos2d-x之四十】如何在Cocos2d-x 3.0中使用opengl shader?全部内容,希望文章能够帮你解决【玩转cocos2d-x之四十】如何在Cocos2d-x 3.0中使用opengl shader?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
猜你在找的Cocos2d-x相关文章