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!
Dostum, düzenlemenin cevabı 4 saatlik bir aramanın ardından çalışmayı sağlayan şeydi. Teşekkürler. – Mikle
Teşekkürler. Sadece oku, şu anda doğrulayamıyorum. İkiniz de işe yarayacağından, onu işaretliyorum. –