Android OpenGL ES 2.0纹理在某些设备上显示黑色
我正在使用OpenGL ES 2.0将覆盖标签加载到我的图像中。它在某些设备(如one plus和mi max)中运行良好,但在某些中端设备(如moto g3)中不起作用 我尝试了stack overflow的其他答案,但似乎没有一个适合我 这是我的装载代码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
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——实际上我也知道这是一个规范上正确的东西。这不是一个免费编码工作的网站。只要付钱给你的自由撰稿人就行了。我知道如何编码。在调试时,我发现错误就在这个代码段的某个地方,所以我想也许这里的一些专家能够帮助我解决这个问题。