CCGLProgram简单配置及应用(cocos2dx-lua-v2.2.5)
在cocos2d-x中有两个类CCGLProgram和CCShaderCache.CCGLProgram类来处理着色器相关操作,对当前绘图程序进行了封装.CCShaderCache通过CCGLProgram来完成对shaders的缓存和管理.这两个类的功能在项目中经常用到,比如实现图象由正常颜色变成灰色(好处是减少资源图),还有在刀塔传奇中用使人物冰封,石化等效果都是用shader. 这里对于这两个类的功能不作深入讨论,因为本人也是刚刚接触,这里主要是介绍在Quick-cocos2dx-lua -v2.2.6版本中如何配置和使用这个功能。 因为Quick-cocos2dx-lua -v2.2.6版本中没有在tolua中导出CCGLProgram,所以lua中不能使用。 接下来就是生成可以使用CCGLProgram的framework和player 第一:找到CCGLProgram.h和CCGLProgram.cpp,: 在CCGLProgram.h中声明以下两个函数: static CCGLProgram* createWithByteArrays(const char* vShaderByteArray,const char* fShaderByteArray); 在CCGLProgram.cpp实现这两个方法(这两个方法可以参考v3.5): CCGLProgram* CCGLProgram::createWithByteArrays(const char* vShaderByteArray,const char* fShaderByteArray) CC_SAFE_DELETE(ret); CCGLProgram* CCGLProgram::createWithFilenames(const char* vShaderFilename,const char* fShaderFilename) CC_SAFE_DELETE(ret); 注掉:CCGLProgram构造方法中两行: // there is no need to delete the shaders. They should have been already deleted. 第二:修改framework 进入libluabindingcocos2dxdraw_nodes,新建文件CCGLProgram.tolua,内容如下: class CCGLProgram : public CCObject } 注:这里是导出你所需要的公共方法,供在lua中调用。 修改:libluabindingcocos2dxCocos2d.tolua, 增加 $pfile "cocos2dx/draw_nodes/CCGLProgram.tolua" 接下执行tolua指令,由quick cocos framework提供: 执行:libluabindingbuild.bat,和bincompile_luabinding.bat 执行完命令后检查tolua绑定: libcocos2d-xscriptingluacocos2dx_supportLuaCocos2d.cpp是否生成CCGLProgram相关绑定函数 生成:framework_precompiled.zip 执行bat:binmake_framework_package.bat会重生生成framework_precompiled.zip 第三:生新编译生成player.exe 因为修改了cpp(LuaCocos2d.cpp,CCGLProgram.cpp),需要重新编译player. 用vs2013直接打开playerproj.win32player.vcxproj编译就可以了。 第四:简单应用shader: local pProgram = CCGLProgram:createWithFilenames("res/shader/IceShader.vsh","res/shader/IceShader.fsh") self.sp = display.newSprite("house.png"):addTo(self) 注: IceShader.fsh内容: #ifdef GL_ES varying vec4 v_fragmentColor; void main() IceShader.vsh文件内容: attribute vec4 a_position; #ifdef GL_ES void main() 程序运行结果: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |