2011-09-13 11 views
1
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.background); 

私background.pngは、私は、バックグラウンドリソースファイルのビットマップをロードするためにBitmapFactoryを使用512x512pxのAndroidのOpenGL:Bitmap.getHeight()>実際の高さ

のサイズを有しています。

ストラングもの:常に

Log.d("bitmap height", bmp.getHeight() + "px"); 

戻り768px。

これはどのように可能ですか?

width = 480; 
height = 800; 
gl.glViewport(0, 0, width, height); 
gl.glMatrixMode(GL10.GL_PROJECTION); 
gl.glLoadIdentity(); 
gl.glOrthof(0.0f, width, 0.0f, height, -1.0f, 1.0f); 

gl.glShadeModel(GL10.GL_FLAT); 
gl.glEnable(GL10.GL_BLEND); 
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); 
gl.glColor4x(0x10000, 0x10000, 0x10000, 0x10000); 
gl.glEnable(GL10.GL_TEXTURE_2D); 


gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST); 
gl.glClearColor(0.5f, 0.5f, 0.5f, 1); 
gl.glDisable(GL10.GL_DEPTH_TEST); 
gl.glDisable(GL10.GL_DITHER); 
gl.glDisable(GL10.GL_LIGHTING); 
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); 

答えて

2

BitmapFactoryは、ビットマップのDPIが画面のDPIと一致しない場合にビットマップの縮尺を調整します。解決策は、inScaledオプションをfalseに設定することです。

BitmapFactory.Options opts = new BitmapFactory.Options(); 
opts.inScaled = false; 
Bitmap bmp = BitmapFactory.decodeResource(getResources(), 
    R.drawable.background, opts); 
2

512分の768 = 1.5 これは、画面の解像度を使用ファクターである:

私のOpenGLは、このような設定です。

+0

この要素を変更するか、すべてのスプライトをより小さなサイズでレンダリングする必要がありますか?この要素はどこから来たのですか? –

+0

私は、あなたの背景が画面の境界を超えているので、それを求めていると思います。私のアプリでは、背景ImageViewのためにandroid:scaleType = "fitXY"を使用し、pngディメンションを忘れてしまった。これは便利ですか? – Zappescu

+0

いいえ、実際はありません。私の "背景"は "普通の"スプライトです。私は背景や他のイメージスプライトとの間に違いはありません。私はOpenGLを使ってこれらのスプライトを描いているので、 "scaleType"のような設定はできません:/ –

関連する問題