我想问的是这样设置了以后如何恢复呢?
grey.fsh
varying vec4 v_fragmentColor;
varying vec2 v_texCoord;
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);
}
3.2恢复
target->setGLProgram(GLProgramCache::getInstance()->getGLProgram(GLProgram::SHADER_NAME_POSITION_TEXTURE_COLOR_NO_MVP));
请问 如果要移除这个shader怎么处理呢?把位置矩阵改为CC_PMatrix后 添加shader的位置是没问题了 但是我再执行一个ShaderPositionTextureColor_noMVP用于移除shader的时候 图片消失了 不知道是不是坐标位置不对 怀疑可能跟设置shader的时候修改了CC_PMatrix有关
求3.0恢复方法
可以再解释一下吗? 3.2里没找到 setGLProgram 这个方法啊 另外 GLProgramCache 也没找到,可以多解释一下吗?
我只想说,位置会偏移。拿你的代码到3.1版本。一点效果都没。吭:15:垃圾引擎,有钱了肯定要换掉!!!!!!!!
yiersansiwuliuqibajiushi
vs 2013 运行后直接就: std::out_of_range at memory location 0x0021E4D4. 怎么回事 shader求解??
附件怎么下载下来是.php的
谢谢分享@@@@@@@@
请问shader在目前相对主流的手机cpu/gpu上性能如何?用多了会不会造成客户端对硬件要求提高很多呢?
我使用cocos2d-x 3.2 直接崩溃了




用这个setGLProgramState()
怎么感觉我和你用法不一样,我是这么用的
void shader(Node* node)
{
auto glprogram = GLProgram::createWithByteArrays(vShader, fShader);
auto glprogramstate = GLProgramState::getOrCreateWithGLProgram(glprogram);
node->setGLProgram(glprogram);
}
更具体的我就不粘代码了,详情移步到:
http://blog.sina.com.cn/s/blog_6113a8e50102vyqv.html
实质上是一样的。createWithByteArrays封装了一些细节。
我不明白为啥目前版本的sprite要走ShaderPositionTextureColor_noMVP?
这个不统一造成了极大的困扰。。。比如ProgressTimer使用的是MVP着色器,目前需求来看,大部分shader都只是重写片段着色器,这下分两种真是着急,尤其是递归设置shader的时候