Lua中使用openGL shader时,Scale9Sprite无法变灰色
来源:互联网 发布:石田电子称软件 编辑:程序博客网 时间:2024/06/09 19:51
--@function [parent=#XX] Scale9SpriteSetGray
--@param #cc.Scale9Sprite sprite9
function Scale9SpriteSetGray(sprite9)
if sprite9 then
if GrayProgram == nil then
local program = cc.GLProgram:create("res/gray.vsh", "res/gray.fsh")
program:bindAttribLocation(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION)
program:bindAttribLocation(cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR)
program:bindAttribLocation(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS)
program:link()
program:updateUniforms()
GrayProgram = program
end
if GrayProgram then
local children = sprite9:getChildren()
if children and #children > 0 then
for _, aSprite in ipairs(children) do
cclog("XXX")
if aSprite.setGLProgram then
aSprite:setGLProgram(GrayProgram)
end
end
end
end
end
end
gray.fsh :
varying vec4 v_fragmentColor;
varying vec2 v_texCoord;
uniform sampler2D CC_Texture0;
void main()
{
vec4 v_orColor = v_fragmentColor * texture2D(CC_Texture0, v_texCoord);
float gray = dot(v_orColor.rgb, vec3(0.299, 0.587, 0.114));
gl_FragColor = vec4(gray, gray, gray, v_orColor.a);
}
gray.vsh
attribute vec4 a_position;
attribute vec2 a_texCoord;
attribute vec4 a_color;
varying vec4 v_fragmentColor;
varying vec2 v_texCoord;
void main()
{
gl_Position = CC_PMatrix * a_position;
v_fragmentColor = a_color;
v_texCoord = a_texCoord;
}
3.2 :
API已变更为
void setGLProgram(GLProgram *glprogram);
GLProgram* getGLProgram()
lua_cocos2dx_manual.cpp 中
static void extendGLProgram(lua_State* tolua_S)
导出了个别GLProgram的接口
自定义创建方法
cc.GLProgram.create(vShaderFilename, fShaderFilename)
- Lua中使用openGL shader时,Scale9Sprite无法变灰色
- OpenGL中shader使用
- OpenGL中使用Shader
- OpenGL中shader使用
- OPENGL灰色shader 和恢复原来像素
- opengl shader 图片变灰及还原,使用自己的shader崩溃问题
- OpenGL中使用Shader的基本步骤
- 关于 Cocosdx 3.4 中如何使用Scale9Sprite
- 计算机自动更新变灰色,无法修改解决方法。
- [Modern OpenGL系列(四)]在OpenGL中使用Shader
- cocos2d lua使用 shader
- Ubuntu NetworkManager 使用:Ubuntu的wired Networks 变灰色,无法连接网络
- opengl shader 使用札记
- opengl shader 使用札记
- 在Lua脚本中使用OpenGL函数
- 在Lua脚本中使用OpenGL函数
- 在Cocos2d-x 3.0中使用opengl shader
- 解决Windows 7中“使用Aero Peek预览桌面”变灰色的方法
- HTML焦点与键盘事件
- MyEclipse反编译Class文件的实现
- 如何实现RibbonX功能卡切换的响应事件
- 《实体解析与信息质量》-2.1.2信息质量和信息品质
- 高质量C/C++编程指南(四)
- Lua中使用openGL shader时,Scale9Sprite无法变灰色
- Android学习 - 悬浮控件
- 几种地图投影方式
- JS 判断滚动条到底部的JS代码
- rubymine 入门简单例子教程
- 正式入驻CSDN
- java.lang.NoSuchMethodException: com.sun.proxy.$Proxy
- ios8 远程推送的注册代码
- c1 驾考成都龙岗科目三考试经验