从资产文件夹加载纹理以用于OpenGL

时间:2015-05-18 15:43:16

标签: java android opengl-es

我知道有很多关于这个问题的问题,但很少有人会对openGL这个问题。

我尝试将一些PNG文件从assets文件夹加载到Bitmap中,但由于某种原因,返回的Bitmap为null,这反过来会抛出NullPointerException:

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,所以我猜测还有另外一个我应该做的程序

P.S。我可以从res / raw文件夹加载它们,但是我没有子目录来组织我的资产。

1 个答案:

答案 0 :(得分:1)

好的,我刚刚意识到我的资源文件夹出于某种原因在res文件夹下。我只是将它放在主文件夹app / main / assets下,它正在工作。 *脸红