我刚刚听到一位用户说我的(Android OpenGL ES 2.0)应用程序(游戏)不能在他的HTC 1X +手机上运行。他得到的只是屏幕顶部的音乐和横幅广告,没有别的。
不幸的是,我没有HTC 1X +来测试它。
一些注意事项:
我的应用程序在15(aprox)其他设备上运行得相当愉快,其他设备已经测试过 - 只有1x(到目前为止)存在问题。
有人能指出OpenGL ES 2.0的一些常见问题可能导致这些纹理无法呈现?某些Android版本或设备是否有任何怪癖?
我还没有发布任何代码只是因为该应用适用于大多数设备,而且我不确定代码的哪些部分会有所帮助,但如果需要任何代码,请直接询问。
编辑 - 包括纹理加载代码
public static int LoadTexture(GLSurfaceView view, Bitmap imgTex){
//Array for texture
int textures[] = new int[1];
try {
//texture name
GLES20.glGenTextures(1, textures, 0);
//Bind textures
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textures[0]);
//Set parameters for texture
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR);
//Apply texture
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, imgTex, 0);
//clamp texture
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T,GLES20.GL_CLAMP_TO_EDGE);
} catch (Exception e){
}
//Increase texture count
textureCount++;
//Return texture
return textures[0];
}
答案 0 :(得分:0)
您检查了采样器属性吗? 设置看起来正确,但为什么不指定GL_TEXTURE_WRAP_S设置?使用GLES20.glTexParameteri作为整数值。
您使用的是哪种类型的位图? 尝试强制内部格式为GL_RGBA,GL_BGR,GL_RGB
你是否正确解开绑定或绑定到不同的纹理? 其他纹理设置可能会对代码的其他部分造成严重破坏..
您是否在着色器中指定了正确的纹理单元? 打印着色器的采样器属性位置,以便您知道这是正确的,并确保在渲染过程中明确地将纹理绑定到它。