Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android OpenGL ES 2.0纹理在某些设备上显示黑色_Android_Opengl Es_Opengl Es 2.0_Overlay - Fatal编程技术网

Android OpenGL ES 2.0纹理在某些设备上显示黑色

Android OpenGL ES 2.0纹理在某些设备上显示黑色,android,opengl-es,opengl-es-2.0,overlay,Android,Opengl Es,Opengl Es 2.0,Overlay,我正在使用OpenGL ES 2.0将覆盖标签加载到我的图像中。它在某些设备(如one plus和mi max)中运行良好,但在某些中端设备(如moto g3)中不起作用 我尝试了stack overflow的其他答案,但似乎没有一个适合我 这是我的装载代码 public void load(int i, int j, int k) { Utils.printLog(TAG, (new StringBuilder()).append("startX:").append(j).append

我正在使用OpenGL ES 2.0将覆盖标签加载到我的图像中。它在某些设备(如one plus和mi max)中运行良好,但在某些中端设备(如moto g3)中不起作用

我尝试了stack overflow的其他答案,但似乎没有一个适合我

这是我的装载代码

public void load(int i, int j, int k)
{
    Utils.printLog(TAG, (new StringBuilder()).append("startX:").append(j).append("  startY:").append(k).toString());
    if(bitmap != null)
    {

        GLES20.glActiveTexture(33984 + textureId);
        GLES20.glBindTexture(3553, i);

        GLES20.glTexParameteri(3553, 10241, 9729);
        GLES20.glTexParameteri(3553, 10240, 9729);
        GLES20.glTexParameterf(3553, 10242, 33071F);
        GLES20.glTexParameterf(3553, 10243, 33071F);

        imageWidth = bitmap.getWidth();
        imageHeight = bitmap.getHeight();



        Log.d("TAG", "Width is " + imageWidth + "H is " + imageHeight);
        int l;

        Log.d("TAG", bitmap.getConfig().toString());

        if(bitmap.getConfig() == Bitmap.Config.ALPHA_8)
        {
            GLES20.glPixelStorei(3317, 1);
            GLUtils.texSubImage2D(3553, 0, j, k, bitmap);
            GLES20.glPixelStorei(3317, 4);
        } else
        {
            GLUtils.texSubImage2D(3553, 0, j, k, bitmap);
        }
        l = GLES20.glGetError();
        if(l != 0)
        {
            Log.e("SubOverlay", (new StringBuilder()).append("load: texSubImage2D() ").append(l).toString());

            (new Throwable()).printStackTrace();
        }
        startX = j;
        startY = k;
        widthRatio = imageWidth / displayWidth;
        heightRatio = imageHeight / displayHeight;
        bitmap.recycle();
        initPos();
    }
}

请帮我解决这个问题。

没有总账错误吗?尺寸是多少?查看代码,我怀疑您从未调用texImage,而只调用texSubImage。子映像用于更新,texImage用于分配。请先尝试使用0调用texImage。相同的代码在其他设备中工作。欢迎使用OpenGL驱动程序:)每个供应商可能会以不同的方式解释规范。因此,编写GL代码的一个很好的技巧是找到一个最小的公分母。试着先打电话给Texamage——实际上我也知道这是一个规范上正确的东西。这不是一个免费编码工作的网站。只要付钱给你的自由撰稿人就行了。我知道如何编码。在调试时,我发现错误就在这个代码段的某个地方,所以我想也许这里的一些专家能够帮助我解决这个问题。