Java 从OpenGL的“资源”文件夹加载纹理
我知道与这个问题相关的问题很多,但似乎很少有针对openGL的问题 我试图将一些PNG文件从assets文件夹加载到位图中,但由于某些原因,返回的位图为null,这反过来会在此处引发NullPointerException:Java 从OpenGL的“资源”文件夹加载纹理,java,android,opengl-es,Java,Android,Opengl Es,我知道与这个问题相关的问题很多,但似乎很少有针对openGL的问题 我试图将一些PNG文件从assets文件夹加载到位图中,但由于某些原因,返回的位图为null,这反过来会在此处引发NullPointerException: GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0); 我用于从资产文件夹加载图像的代码: public static Bitmap getBitmapFromAsset(AssetManager mgr, Stri
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);
我用于从资产文件夹加载图像的代码:
public static Bitmap getBitmapFromAsset(AssetManager mgr, String path)
{
InputStream is = null;
Bitmap bitmap = null;
try {
is = mgr.open(path);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;
bitmap = BitmapFactory.decodeStream(is, null, options);
}
catch (final IOException e)
{
bitmap = null;
Log.e(TAG, "FAILED TO get getBitmapFromAsset: " + e.getMessage());
}
finally
{
if (is != null)
{
try
{
is.close();
}
catch (IOException ignored)
{
}
}
}
return bitmap;
}
我尝试过几种不同的方法,例如不使用BitmapFactory.Options,但不管我得到的是NullPointerException,所以我猜我应该做另一个过程
另外,我可以从res/raw文件夹中加载它们,但我不能有子目录来组织我的资产。好的,我刚刚意识到我的资产文件夹出于某种原因位于res文件夹下。我只是把它放在主文件夹app/main/assets下,它就工作了。
*脸红哪部分出现故障?
AssetManager
上的open()
方法,还是decodeStream()
?您应该能够通过在调试器中单步执行它来判断。我刚刚分离了调用,而失败的肯定是open()调用。字符串路径假定Android将从资产文件夹开始查看。