У меня есть 3D-куб, и я открываю предварительный просмотр камеры, и я хочу видеть, как этот вращающийся куб отображается над камерой.
То, что я попытался, внутри метода SurfaceChanged класса, реализующего surfaceHolder.callback
, вызываю camera.setPreviewCallback(new PreviewCallback(){ }
следующим образом:
public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {
.......
.......
.......
camera.setPreviewCallback(new PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
// TODO Auto-generated method stub
glSurface.setRenderer( new MyRender());
setContentView(glSurface);
}
});
В результате этого кода отображается предварительный просмотр камеры в течение нескольких секунд до тех пор, пока поверхность не будет изменена, затем предварительный просмотр камеры исчезнет, и 3D-куб появится на черном фоне.
Так или иначе, чтобы показать обе поверхности?
Насколько я помню, вам нужно установить CameraPreview в ontop GlView. То не интуитивно, но должно работать. вот ссылка, которая может вам помочь: http://digitalbreed.com/2009/android-render-opengl-on-top-of-camera-preview
Вы можете сделать свой собственный внеэкранный композитинг, а затем нарисуйте результат в один SurfaceView. См. Этот пример кода для получения более подробной информации.