0

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は、多くのテクスチャをロードしている場合のテクスチャの「番号」にすぎないと思います。できればテクスチャハンドル。しかし、残りはどうですか?

4

1 に答える 1

0

ANDROID と CONTEXT さまざまな Android API に目を通してみると、それらの多くが android.content.Context オブジェクトをパラメーターとして取っていることがわかります。アクティビティまたはサービスは通常、コンテキストとして使用されることもわかります。これが機能するのは、これらのクラスがどちらも Context から拡張されているためです。

コンテキストとは正確には何ですか?Android リファレンス ドキュメントによると、これはさまざまな環境データを表すエンティティです。ローカル ファイル、データベース、環境に関連付けられたクラス ローダー、システム レベル サービスなどのサービスへのアクセスを提供します。この本全体を通して、また Android での日常的なコーディングでは、コンテキストが頻繁に渡されることがわかります。出典:「Android in Practice」本。

したがって、上記のメソッドは mainactivity クラス内で呼び出され、最初のパラメータは getApplicationContext()getContext()getBaseContext()またはthis

resourceID は、操作するリソース ファイルを表します。私の場合、 res/drawable フォルダー内に BMP イメージがあり、これは次のように書くことで取得できます

R.res.myimagename.bmp

この単純なコードは、リソース ファイルの場所である単純な整数を返します。つまり、resourceID です。つまり、リソース ファイルへの相対パスのようなものです。

于 2012-11-23T13:27:10.777 に答える