2011-12-24 14 views
1

ICS搭載のGalaxy Nexusで動作するOpenGLのビットを使用するAndroidアプリがあります。ハードウェアアクセラレーションをオンにしてOpenGLのアクティビティを使用すると、それらのテクスチャのいくつかがシステムによって盗まれ、現在リストビューやその他のUI要素に盗まれています。 GLES20.glGenTexturesを介して得られたGLポインタは、実際には新鮮なポインタではなく、ウィンドウレンダラで使用されるポインタを上書きするものです。Android - ICS - ハードウェアアクセラレーションがOpenGLテクスチャを盗む

いずれの場合でも、OSの画面描画システムと私のアプリケーションの間に何らかの種類のファイアウォールやサンドボックスが存在するはずです。

ハードウェアアクセラレーションを完全にオフにすると、表示はうまくなりますが、UIが不安定になります(どちらの方法でも、滑らかで滑らかな滑らかさ)。それをアクティビティによってオフ/オンにすることは役に立ちません。

スクリーン(前/後)通常

反復ビットマップ描画可能、Iは異なる活性のOpenGLにロードされ(この場合はカメラから)今画像 - http://a.yfrog.com/img532/9245/t81k.png

ジェン/ロードテクスチャ

int[] image = new int[1]; 
GLES20.glGenTextures(1, image, 0); 
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S,GLES20.GL_CLAMP_TO_EDGE); 
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T,GLES20.GL_CLAMP_TO_EDGE); 
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER,GLES20.GL_LINEAR); 
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER,GLES20.GL_LINEAR); 
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bmp, 0); 

基本

01を描きます
GLES20.glViewport(0, 0, width, height); 
GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0); 
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT); 
GLES20.glUseProgram(shader.program); 
GLES20.glUniform1i(GLES20.glGetUniformLocation(shader.program, "imageTexture"), 0); 
GLES20.glVertexAttribPointer(Attributes.VERTEX, 2, GLES20.GL_FLOAT, true, 0, squareVertices); 
GLES20.glEnableVertexAttribArray(Attributes.VERTEX); 
GLES20.glVertexAttribPointer(Attributes.TEXTUREPOSITON, 2, GLES20.GL_FLOAT, true, 0, textureVertices); 
GLES20.glEnableVertexAttribArray(Attributes.TEXTUREPOSITON); 
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); 
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, image[0]); 
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4); 
+0

これは非常識に聞こえます。あなたはスクリーングラブといくつかのコードを投稿できますか? –

+1

そのスクリーングラブも非常識に見えます。 EGLコンテキストセットアップコードを投稿できますか?あなたは何とかリサイクルされたGLの文脈を継承しているかもしれません... –

答えて

2

私は、特定の時間にUIスレッドでGLコマンドを呼び出していました。これは、Romain Guyが提案したように、このハードウェアアクセラレーションによる表示を妨げていました(post)。

関連する問題