HI~
我有一个将画面转向黑白的简单shader,片段着色器代码如下:
#ifdef GL_ES
precision mediump float;
#endif
varying vec2 v_texCoord;
uniform sampler2D u_texture;
void main() {
vec4 color = texture2D(u_texture, v_texCoord);
float grey = color.r * 0.299 + color.g * 0.587 + color.b * 0.114;
gl_FragColor = vec4(grey*1.13, grey*1.13, grey*1.13,texture2D(u_texture, v_texCoord).a);
}
```
但是如果我直接在C++代码中如下代码加载:
CCGLProgram *shaderProgram_ = new CCGLProgram();
shaderProgram_->initWithVertexShaderByteArray(vsh, fsh);
shaderProgram_->addAttribute(kCCAttributeNamePosition, kCCVertexAttrib_Position);
shaderProgram_->addAttribute(kCCAttributeNameTexCoord, kCCVertexAttrib_TexCoords);
shaderProgram_->link();
shaderProgram_->updateUniforms();
CCShaderCache::sharedShaderCache()->addProgram(shaderProgram_, "grayShader");
```
渲染的结果确实不成功的,并且有OpenGL error.
WP8平台不支援运行时编译shader,Cocos2d-x 2.2使用了precompiledshaders.h里面来存储预编译好的shader.
那么我该如何做呢?
比如说如何将我的shader预编译,然后给Cocos2d-x WP8可用?
Thanks.
