我正在开发一款在很多Android设备上运行良好的游戏(雷克萨斯7,SG ACe,HTC Desire ......)。但特别是对于SGS1,我不能比黑屏更好。 在对整个代码进行了大量调查之后,我认为该问题位于我的着色器代码中。编译还可以,也可以链接,但我听说不同GPU之间存在一些不兼容性(例如http://www.jpct.net/forum2/index.php/topic,2833.15.html)
这是着色器代码:
[VERTEX]
uniform mat4 uMVPMatrix; // Ortho matrix
attribute vec2 vPosition; // Vertex position
void main(){
gl_Position = uMVPMatrix * vec4(vPosition, 0.0, 1.0);
}
[FRAGMENT]
precision mediump float;
uniform lowp vec4 CurColor;
void main(){
gl_FragColor = CurColor;
}
即使它是非常基本的,也许在某些事情上显然是错误的?提前谢谢。
答案 0 :(得分:1)
我终于明白了。我有两个问题:
1)PowerVR似乎不喜欢统一
的'lowp'限定符2)在其他着色器中,我对vPosition有'vec4',尽管我只通过顶点(X,Y)传递2个分量。奇怪的是:为什么其他GPU可以解决这些错误?像mali(malideveloper.com/developer-resources/tools/ ...)提供的检查器对于PowerVR来说非常令人耳目一新!
答案 1 :(得分:0)
以下是一些建议:
glGetError()
是否返回与0 在尝试其中一些之后评论我。