Próbuję przesłać podgląd kamery do obiektu z teksturą powierzchni i renderować go na kwadracie. Mam uruchomiony kod dla GLES20, ale nie znalazłem nic dla 1.x. Zasadniczo to powinno działać tak, prawda?Android OpenGLES 1.x CameraPreview do 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);
Plac zostanie narysowany, ale jest całkowicie biały. Nie otrzymuję glErrors ani innych wyjątków. Handler "onFrameAvailable" również zostaje wywołany. Jeśli korzystam z glTeximage z załadowaną bitmapą, jest ona poprawnie rysowana na kwadracie.
WSZELKIE pomysły? Dziękuję Ci!
Stary, twoja edycja sprawiła, że zadziałało po 4 godzinach szukania odpowiedzi. Dzięki. – Mikle
Dziękuję. Po prostu przeczytaj, nie można w tej chwili zweryfikować. Ponieważ oboje zgadzacie się, że to działa, zaznaczam to. –