2011-12-29 5 views
2

OPEN GL 2.0でスクロール可能なイメージのグリッドを実装しようとしています。 Canvas Drawingを使用してビューを実装していますが、パフォーマンス上の理由からOGLに移行することにしました。 私の実装では、各フレームでビットマップオブジェクトのリストを描画します。各ビットマップは、画像サムネイルのキャッシュされた行です。 これらのビットマップをOGLで使用できるテクスチャに変換するにはどうすればよいですか?OPEN GL Android - ビットマップオブジェクトを描画可能テクスチャに変換する方法

答えて

4
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureID); 
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0); 

..where textureIDは、テクスチャの一意のIDです(通常glGenTextures()から後天性、あるいは単にそれぞれの新しいテクスチャの新しいID番号を割り当てるの独自のシステムを維持するから)。 bitmapはBitmapオブジェクトです。


私のテクスチャクラスでuseageの例:

public class Texture { 

protected String name; 
protected int textureID = -1; 
protected String filename; 

public Texture(String filename){ 
    this.filename = filename; 
} 

public void loadTexture(GL10 gl, Context context){ 

    String[] filenamesplit = filename.split("\\."); 

    name = filenamesplit[filenamesplit.length-2]; 

    int[] textures = new int[1]; 
    //Generate one texture pointer... 
    //GLES20.glGenTextures(1, textures, 0); 

    // texturecount is just a public int in MyActivity extends Activity 
    // I use this because I have issues with glGenTextures() not working     
    textures[0] = ((MyActivity)context).texturecount; 
    ((MyActivity)context).texturecount++; 

    GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textures[0]); 

    //Create Nearest Filtered Texture 
    GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST); 
    GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR); 

    //Different possible texture parameters, e.g. GLES20.GL_CLAMP_TO_EDGE 
    GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_REPEAT); 
    GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_REPEAT); 

    Bitmap bitmap = FileUtil.openBitmap(name, context); 

    GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0); 

    bitmap.recycle(); 

    textureID = textures[0]; 

} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public int getTextureID() { 
    return textureID; 
} 

public void setTextureID(int textureID) { 
    this.textureID = textureID; 
} 


} 
関連する問題