5

Kamera önizlemesini bir sürfakta nesnesi nesnesine göndermeye ve bir kareye dönüştürmeye çalışıyorum. GLES20 için kod çalıştırma var ama 1.x için bir şey bulamadım. Temel olarak böyle çalışmalı, doğru mu?android OpenGLES 1.x Surfacetexture için CameraPreview

// 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); 

Kare çizilir, ancak tamamen beyazdır. GlErrors veya başka istisnalar almıyorum. "OnFrameAvailable" işleyicisi de çağrılıyor. Yüklü bir bitmap ile glTeximage kullanırsanız, kareye doğru çizilir.

HERHANGİ BİR fikir? Teşekkür ederim!

cevap

7

Aynı sorunla karşı karşıyayım. Belki yanılıyor, ama SurfaceTexture GLES10 ile uyumlu değil gibi görünüyor. Yüzey dokusu GL_TEXTURE_EXTERNAL_OES kullanır, bu yüzden bu dokuyu kullanabilen özel bir parça gölgelendirici ("#extension GL_OES_EGL_image_external: require").

glUseProgram (...), vb. GLES10'da kullanılamayacağından, özel gölgelendiricileri kullanamayız. Dediğim gibi

, belki yanlış ... İyi şanslar

EDIT değilim: ben sonda gelen o iş için olsun. "Gl.glEnable (GLES11Ext.GL_TEXTURE_EXTERNAL_OES);"

+0

Dostum, düzenlemenin cevabı 4 saatlik bir aramanın ardından çalışmayı sağlayan şeydi. Teşekkürler. – Mikle

+0

Teşekkürler. Sadece oku, şu anda doğrulayamıyorum. İkiniz de işe yarayacağından, onu işaretliyorum. –

İlgili konular