我使用的是最新的cocos2d-x v3.9(JSBinding)。
这是一个代码(添加一个精灵并附加一个简单的灰色着色器):
attribute vec4 a_position;
attribute vec2 a_texCoord;
#ifdef GL_ES
varying mediump vec2 v_texCoord;
#else
varying vec2 v_texCoord;
#endif
void main()
{
gl_Position = (CC_PMatrix * CC_MVMatrix) * a_position;
v_texCoord = a_texCoord;
}
这是着色器vsh:
#ifdef GL_ES
precision lowp float;
#endif
varying vec2 v_texCoord;
void main(void) {
vec4 normalColor = texture2D(CC_Texture0, v_texCoord).rgba;
float grayColor = dot(normalColor.rgb, vec3(0.299, 0.587, 0.114));
gl_FragColor = vec4(grayColor, grayColor, grayColor, normalColor.a);
}
和fsh:
<activity
android:name=".SlideNewActivity"
android:configChanges="orientation|keyboardHidden"
android:launchMode="singleTask" />
此代码在浏览器中工作正常,我可以在屏幕中央看到灰色精灵。
但是在Mac和iOS(JSBinding)中,精灵是灰色的,但精灵的位置在屏幕的右上方(不在它应该的中心)。
不确定这里出了什么问题,任何建议都将不胜感激,谢谢:)
答案 0 :(得分:0)
出于某种原因,浏览器可以使用:
gl_Position =(CC_PMatrix * CC_MVMatrix)* a_position;
但在原生iOS中,您必须将顶点着色器修改为:
gl_Position = CC_PMatrix * a_position;