1

私はOpenGLでビットマップを表示するためにこのガイドに従ってきました

http://obviam.net/index.php/texture-mapping-opengl-android-displaying-images-using-opengl-and-squares/

ただし、1つずつ表示したいビットマップのキューがあります。

次のように、キューの先頭として持っているので、onDrawFrame毎回新しいテクスチャを作成する必要があります。BitmaponDrawFrame

Bitmap bitmap = ...

// generate one texture pointer
gl.glGenTextures(1, textures, 0);
// ...and bind it to our array
gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);

// create nearest filtered texture
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);

// Use Android GLUtils to specify a two-dimensional texture image from our bitmap
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);

// Clean up
bitmap.recycle();

それとも、どういうわけか、それらの操作の一部だけを他の操作を移動させることができonSurfaceChangedますか?

4

1 に答える 1

2

テクスチャを別のテクスチャに置き換えたい場合(そして最初のテクスチャを保持するつもりがない場合)、glTexImage2Dまたはを呼び出すGLUtils.texImage2Dことが2回目に行う必要がある唯一のことです。これは、既存のテクスチャデータを新しいデータに置き換えるだけです。これは、有効なOpenGLコンテキストがある場所ならどこからでも呼び出すことができます。

テクスチャが同じサイズの場合、テクスチャサイズglTexSubImage2Dは変更されず、GPUでのメモリ割り当てを回避できる可能性があるため(同じバッキングメモリを再利用するだけ)、使用すると改善される可能性があります。

于 2012-05-30T17:51:41.833 に答える