我们使用HTC Evo 3D,我们正试图在自动立体模式下通过相机的自动立体绘制预览图像获得3D叠加(使用OpenGL ES绘制的立方体),但我们无法使其工作。我们可以做的是拥有相机视图(2D或3D)或者我们可以在3D模式下使用OpenGL立方体,但是当我们尝试将两者结合起来时,整个设备都会冻结(使用“ W / SharedBufferStack (11043):waitForCondition(LockCondition)超时(identity = 425,status = 0).CPU可能被挂钩。再次尝试。“)或者我们只看到相机图像但没有叠加。
对于冻结的东西,我们已经在网上看到了一些信息,似乎没有真正的解决方案,但修补内核,所以我们现在关注的另一个问题。
我们所拥有的是S3DGLSurfaceView
扩展GLSurfaceView
,我们通过调用
Surface surface = holder.getSurface();
formatResult = DisplaySetting.setStereoscopic3DFormat(surface,
DisplaySetting.STEREOSCOPIC_3D_FORMAT_SIDE_BY_SIDE);
在这个视图中我们绘制了我们的立方体(当我们只将这个视图添加到我们的活动时,它可以很好地工作)。但是,我们还有一个CameraPreview
对象,它封装了我们通过调用
Surfaceview
camera = Camera.open(CAMERA_STEREOSCOPIC);
camera.setPreviewDisplay(holder);
持有人从preview.getHolder()
存储,preview
为SurfaceView
。
对于活动本身,我们使用RelativeLayout
,首先添加相机预览,然后添加OpenGL表面 - 我们也尝试了反过来,但这并没有改变任何东西。我们也试图尝试z顺序,但这也没有效果。
目前,我们的想法是,根本不可能有两个视图都启用了自动立体模式(相机预览自动将它和我们的OpenGL表面,我们手动启用它)但我们希望这是错了,我们错过了别的东西。
如果有人能给我们提示我们如何在3D摄像机图像上进行3D叠加,那将是很棒的 - 所以两者都是自动光学模式。