小编rka*_*apl的帖子

Android opengl纹理损坏

我在Android模拟器上遇到纹理损坏问题(它在大多数Android设备上运行正常).

Android 4.1参考渲染

上面的图片是运行Android 4.1 Jelly Bean的模拟器生成的参考渲染,一切看起来都应该如此.

Android 1.6

第二张图片是在运行Android 1.6的模拟器中捕获的.请注意一些禁用的工具栏按钮损坏(它们使用1f,1f,1f,0.5f颜色渲染)

Android 1.6

第三张图片在同一个仿真器中捕获.不同的是,现在得分在右上角呈现.分数是位图字体,它的纹理是alpha蒙版.在得分失去它的纹理后渲染的所有东西.请注意,前面的屏幕截图还包含以相同方式呈现的位图字体(但使用不同的纹理).

三星设备之一出现了类似的问题(我不记得该型号).渲染地板纹理时,在丢失纹理后渲染的所有内容.当我要么a)没有绑定纹理b)确实绑定纹理,但是没有使用它时没有三角形c)从头开始重新创建png资产时问题没有表现出来.

Opengl设置:

gl.glDisable(GL10.GL_LIGHTING);
gl.glDisable(GL10.GL_CULL_FACE);
gl.glDisable(GL10.GL_DEPTH_TEST);
gl.glDisable(GL10.GL_DITHER);
gl.glDepthMask(false);
gl.glEnable(GL10.GL_TEXTURE_2D);
gl.glBlendFunc(GL10.GL_ONE,GL10.GL_ONE_MINUS_SRC_ALPHA);
gl.glShadeModel(GL10.GL_FLAT);
gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, GL10.GL_MODULATE);
Run Code Online (Sandbox Code Playgroud)

如何加载纹理:

public void doGLLoading(Engine renderer) {
        GL10 gl=renderer.getGl();
        int[] ids=new int[1];
        gl.glGenTextures(1, ids,0);
        id=ids[0];
        gl.glBindTexture(GL10.GL_TEXTURE_2D, id);
        Log.d("SpriteDraw", String.format("Texture %s has format %s",getPath(),bitmap.getConfig().toString()));
        buildMipmap(gl, bitmap);
        gl.glTexParameterf(GL10.GL_TEXTURE_2D,GL10.GL_TEXTURE_MIN_FILTER, minFilter);
        gl.glTexParameterf(GL10.GL_TEXTURE_2D,GL10.GL_TEXTURE_MAG_FILTER, magFilter);
        gl.glTexParameterf(GL10.GL_TEXTURE_2D,GL10.GL_TEXTURE_WRAP_S, textureWrapS);
        gl.glTexParameterf(GL10.GL_TEXTURE_2D,GL10.GL_TEXTURE_WRAP_T, textureWrapT);
    }
private void buildMipmap(GL10 gl, Bitmap bitmap) {
    int level = 0;
    int height = bitmap.getHeight();
    int width = bitmap.getWidth();

    while (height >= 1 || width >= …
Run Code Online (Sandbox Code Playgroud)

android opengl-es android-emulator

11
推荐指数
1
解决办法
1032
查看次数

标签 统计

android ×1

android-emulator ×1

opengl-es ×1