2011-01-15 10 views

答えて

3

それほど難しいことではありません。これは主要な部分です:

public static Bitmap loadBitmapFromId(Context context, int bitmapId) { 
     InputStream is = context.getResources().openRawResource(bitmapId); 
     try { 
      BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); 
      bitmapOptions.inPreferredConfig = Bitmap.Config.RGB_565; 
      return BitmapFactory.decodeStream(is, null, bitmapOptions); 
     } catch (Exception ex) { 
      Log.e("bitmap loading exeption", ex.getLocalizedMessage()); 
      return null; 
     } 
    } 

ここではBitmap.Config.RGB_565が重要です。次に、ビットマップを追加し、いつものようにテクスチャIDを取得します。

// Transparancy 
    // important: transparent objects have to be drawn last! 
    gl.glEnable(GL10.GL_BLEND); 
    gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); 

と描画部分(あなたはおそらくすでにこれをやっている):あなたのレンダラのonSurfaceCreated(GL10 GL、EGLConfig設定)で今

は、この追加非常に良い

 // first disable color_array for save: 
     gl.glDisableClientState(GL10.GL_COLOR_ARRAY); 

     // Enabled the vertices buffer for writing and to be used during 
     // rendering. 
     gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); 
     // Specifies the location and data format of an array of vertex 
     // coordinates to use when rendering. 
     gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer); 

     gl.glEnable(GL10.GL_TEXTURE_2D); 

     gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, 
       GL10.GL_LINEAR); 
     gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, 
       GL10.GL_LINEAR); 

     gl.glBindTexture(GL10.GL_TEXTURE_2D, myTextureId); 
     gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY); 
     gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer); 

     gl.glDrawArrays(drawMode, 0, verticesCount); 

     gl.glDisable(GL10.GL_TEXTURE_2D); 
     // Disable the vertices buffer. 
     gl.glDisableClientState(GL10.GL_VERTEX_ARRAY); 
+0

を、ありがとうございました! – lacas