Tôi đang cố gắng gửi bản xem trước máy ảnh đến một đối tượng surfacetexture và hiển thị nó trên một hình vuông. Tôi đã chạy mã cho GLES20 nhưng didnt tìm thấy bất cứ điều gì cho 1.x. Về cơ bản nó sẽ hoạt động như thế này, phải không?android OpenGLES 1.x CameraPreview để 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);
Hình vuông được vẽ nhưng hoàn toàn trắng. Tôi không nhận được glErrors hoặc các ngoại lệ khác. Trình xử lý "onFrameAvailable" cũng được gọi. Nếu tôi sử dụng glTeximage với bitmap đã tải, nó được vẽ chính xác trên hình vuông.
BẤT K ideas ý tưởng nào? Cảm ơn bạn!
Dude, chỉnh sửa của bạn là nội dung khiến nó hoạt động sau 4 giờ tìm kiếm câu trả lời. Cảm ơn. – Mikle
Cảm ơn bạn. Chỉ cần đọc nó, không thể xác minh tại thời điểm này. Vì cả hai đều đồng ý rằng nó hoạt động, tôi gắn cờ nó. –