cocos2dx 自带shader 创建一个三角形
2015-06-23 11:32
453 查看
<1>HelloWorld.h
#ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" USING_NS_CC; #include<string> using namespace std; class HelloWorld : public cocos2d::Layer { public: HelloWorld(); ~HelloWorld(); static cocos2d::Scene* createScene(); virtual bool init(); CREATE_FUNC(HelloWorld); virtual void visit(Renderer* renderer, const Mat4& parentTransform, uint32_t parentFlags); void onDraw(); private: CustomCommand _command; }; #endif // __HELLOWORLD_SCENE_H__<2>HelloWorld.cpp
#include "HelloWorldScene.h" USING_NS_CC; using namespace std; HelloWorld::HelloWorld(){ } HelloWorld::~HelloWorld(){ } bool HelloWorld::init() { if ( !Layer::init() ){ return false; } this->setGLProgram(GLProgramCache::getInstance()->getGLProgram(GLProgram::SHADER_NAME_POSITION_COLOR)); return true; } void HelloWorld::visit(Renderer *renderer, const Mat4& parentTransform, uint32_t parentFlags){ Node::visit(renderer, parentTransform, parentFlags); _command.init(_globalZOrder); _command.func = CC_CALLBACK_0(HelloWorld::onDraw, this); Director::getInstance()->getRenderer()->addCommand(&_command); } void HelloWorld::onDraw(){ auto glProgram = getGLProgram(); glProgram->use(); glProgram->setUniformsForBuiltins(); auto winSize = Director::getInstance()->getWinSize(); float vert[] = { 0, 0, winSize.width, 0, winSize.width/2, winSize.height }; float color[] = { 0, 1, 0, 1, //绿 1, 0, 0, 1, //红 0, 0, 1, 1 //蓝 }; GL::enableVertexAttribs(GL::VERTEX_ATTRIB_FLAG_POSITION | GL::VERTEX_ATTRIB_FLAG_COLOR); glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_POSITION, 2, GL_FLOAT, GL_FALSE, 0, vert); glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_COLOR, 4, GL_FLOAT, GL_FALSE, 0, color); glDrawArrays(GL_TRIANGLES, 0, 3); CC_INCREMENT_GL_DRAWN_BATCHES_AND_VERTICES(1, 3); CHECK_GL_ERROR_DEBUG(); } Scene* HelloWorld::createScene() { auto scene = Scene::create(); auto layer = HelloWorld::create(); scene->addChild(layer); return scene; }
相关文章推荐
- cocos2d:——第七节:动作
- cocos2D(八)---- CCMenu && CCMenuItem
- cocos2dx 3.x mac 下创建工程
- Cocos2dx 3.0 以上版本 集成 MFC
- cocos2d-x初探
- cocos2d-x初探
- Cocos2d-x的学习之旅(八)进度条
- doxygen如何调用graphviz查看cocos2dx源码
- 【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第十六课:Cocos2D-X几何图形1-3
- cocos js 怎样设置一个按钮(MenuItemSprite)为不可点击状态?
- cocos js 怎样在 runAction(cc.sequence(a1, a2)); 后执行一个回调函数?
- cocos2dx项目打包APK环境安装
- Cocos2d-x三国ACT手游《热血斩将》完整源码下载
- cocos js添加 按钮1
- 【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第十五课:Cocos2D-X事件处理1-7
- cocos js js java互调 (如何在ANDROID平台上使用JS直接调用JAVA)
- Cocos2d-x引擎解析
- Cocos2d-x的学习之旅(七)更新函数Update
- 使用TileMap制作游戏地图,在cocos2d-x中使用(一)
- cocos code ide android项目打包