我如何使用Context类android

时间:2012-11-23 12:53:39

标签: android opengl-es

我正在网上阅读有关如何在Android应用程序中加载纹理并在着色器中传递它们的教程。我找到了这个方法

    public static int loadTexture(final Context context, final int resourceId)
{
    final int[] textureHandle = new int[1];

    GLES20.glGenTextures(1, textureHandle, 0);

    if (textureHandle[0] != 0)
    {
        final BitmapFactory.Options options = new BitmapFactory.Options();
        options.inScaled = false;   // No pre-scaling

        // Read in the resource
        final Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), resourceId, options);

        // Bind to the texture in OpenGL
        GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureHandle[0]);

        // Set filtering
        GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
        GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST);

        // Load the bitmap into the bound texture.
        GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);

        // Recycle the bitmap, since its data has been loaded into OpenGL.
        bitmap.recycle();
    }

    if (textureHandle[0] == 0)
    {
        throw new RuntimeException("Error loading texture.");
    }

    return textureHandle[0];
}

但我该如何使用它?调用此方法时我应该把它作为参数???返回的是什么整数?我想,根据我对opengl的了解,它返回的int只是纹理的“数字”,以防我加载许多纹理。你可以使用纹理处理。但其余的呢?

1 个答案:

答案 0 :(得分:0)

ANDROID AND CONTEXT如果您查看各种Android API,您会发现其中许多都将android.content.Context对象作为参数。您还将看到活动或服务通常用作上下文。这是有效的,因为这两个类都从Context扩展。

究竟是什么情境?根据Android参考文档,它是一个表示各种环境数据的实体。它提供对本地文件,数据库,与环境关联的类加载器,服务(包括系统级服务)等的访问。在本书和使用Android的日常编码中,您将看到Context经常传递。来自:“Android in Practice”一书。

所以上面的方法应该在mainactivity类中调用,第一个参数是getApplicationContext()getContext()getBaseContext()this

之一

resourceID表示您希望使用的资源文件。在我的情况下,我在res / drawable文件夹中有一个BMP图像,这可以通过编写

来获得
R.res.myimagename.bmp

这个简单的代码返回一个简单的整数,它是资源文件的位置,所以实际上是resourceID。换句话说,它有点像资源文件的相对路径