我似乎有一个奇怪的问题,在一部手机上两个纹理根本没有加载,因为它们看起来像白色矩形,但是,它们都加载到我的手机上。另一个问题是,在恢复加载屏幕显示的游戏时,这在第一次暂停应用程序时效果很好,但是在第二次恢复后,纹理不会加载到我的手机上...但是加载屏幕加载的纹理都会出现细
所有纹理都是2的幂,并且是024x1024 ......总共有大约20个纹理。
问题类型有哪些原因?
以下是重新加载的代码......
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
super.onSurfaceCreated(gl, config);
if(firstTimeCreate) {
load(); //load settings
Assets.Load(this);
firstTimeCreate = false;
} else {
//When screen is resumed....
Assets.ReloadLoadingScreen();
}
这就是一切,这就是加载方法......
GL10 gl = glGraphics.getGL();
int[] textureIds = new int[1];
gl.glGenTextures(1, textureIds, 0);
textureId = textureIds[0];
InputStream in = null;
try {
in = fileIO.readAsset(fileName);
Bitmap bitmap = BitmapFactory.decodeStream(in);
gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
setFilters(GL10.GL_LINEAR , GL10.GL_LINEAR);
gl.glBindTexture(GL10.GL_TEXTURE_2D, 0);
width = bitmap.getWidth();
height = bitmap.getHeight();
bitmap.recycle();
} catch(IOException e) {
throw new RuntimeException("Couldn't load texture '" + fileName +"'", e);
} finally {
if(in != null)
try { in.close(); } catch (IOException e) { }
}
和绑定方法......
public void bind() {
GL10 gl = glGraphics.getGL();
gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
}
不要以为上面有什么问题,但可能有吗?
答案 0 :(得分:0)
我认为我们需要更多细节来正确指出正确的方向。不幸的是,有很多事情可能导致这个问题。
你是否正在加载你的纹理 onSurfaceCreated ?暂停应用程序并恢复时,需要在OpenGL中重新绑定这些纹理。
另外,如果您使用Eclipse,LogCat窗口中是否有任何错误?
您可能想要做的一件事是启用OpenGL调试标志进行测试。你可以在这里找到相关信息:
http://developer.android.com/resources/articles/glsurfaceview.html