5

カメラのプレビューをsurfacetextureオブジェクトに送信して正方形にレンダリングしようとしています。私はGLES20のコードを実行していますが、1.xでは何も見つかりませんでした。 基本的にはこのように動作するはずです。アンドロイドOpenGLES 1.x CameraPreview to surfacetexture

// setup texture 
gl.glActiveTexture(GL10.GL_TEXTURE0); 
gl.glGenTextures(1, textures, 0); 
gl.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, textures[0]); 
gl.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, ...); 
... 

// setup surfacetexture object 
surface = new SurfaceTexture(textures[0]); 
surface.setOnFrameAvailableListener(this); 


// setup camera 
mCamera = Camera.open(0); 
Camera.Parameters param = mCamera.getParameters(); 
List<Size> psize = param.getSupportedPreviewSizes(); 
//find previewsize to match glsurface from renderer 
param.setPreviewSize(psize.get(i).width, psize.get(i).height); 
mCamera.setParameters(param); 

// set the texture and start preview 
mCamera.setPreviewTexture(surface); 
mCamera.startPreview(); 


// in the "onFrameAvailable" handler, i switch a flag to mark a new frame 
updateSurface = true; 


// and in the renderloop i update and redraw 
if (updateSurface) { 
    surface.updateTexImage(); 
    updateSurface = false; 
} 
gl.glActiveTexture(GL10.GL_TEXTURE0); 
gl.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, textures[0]); 

// Draw square 
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBufferFloor); 
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer); 
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, vertices.length/3); 

正方形は描画されますが、完全に白です。私はglErrorsやその他の例外を受け取っていません。 "onFrameAvailable"ハンドラも呼び出されます。 ロードされたビットマップでglTeximageを使用すると、正方形に正しく描画されます。

どのようなアイデアですか?ありがとうございました!

答えて

7

私は同じ問題に直面しています。たぶん私は間違っていますが、SurfaceTextureはGLES10と互換性がないようです。サーフェステクスチャはGL_TEXTURE_EXTERNAL_OESを使用するため、このテクスチャを使用できるカスタムのフラグメントシェーダ(#extension GL_OES_EGL_image_external:require)が使用されます。

glUseProgram(...)などはGLES10では使用できないため、カスタムシェーダーは使用できません。

私が言ったように、多分私が間違っている...幸運

編集:私はfinalyそれが仕事を得ます。 "gl.glEnable(GLES11Ext.GL_TEXTURE_EXTERNAL_OES);"を使用する必要があります。

+0

あなたの編集は、回答を検索してから4時間後に機能したものでした。ありがとう。 – Mikle

+0

ありがとうございます。ただそれを読んで、今確証することはできません。あなたはどちらも同じことに同意するので、私はそれにフラグを立てます。 –

関連する問題