2014-05-07 67 views
0

我想用jPCT顯示3D對象,所以我使用了一個custum GLSurfaceView.Renderer來顯示我想要的東西。在下面,我需要顯示相機預覽。使用2 SurfaceView lag

它的工作正常,但我的問題是當我顯示2 SurfaceView(對象1和相機預覽1),我滯後於我的軟件。我測試它,這是因爲我同時使用2個SurfaceView。

我該如何解決?我試圖顯示在延伸GLSurfaceView我的相機預覽我的3D對象:

public class CameraView extends GLSurfaceView implements SurfaceHolder.Callback 

但對象是永遠不會顯示和某些功能不工作(如搜索的3D對象的2D視圖...)

任何人有想法?

回答

0

有幾種可能性。一個是你的渲染器線程之間存在一些導致滯後的交互。另一個原因是添加一個額外的圖層已經導致系統執行額外的GLES組合,而這會減慢你的速度。 (有關背景信息,請參見this doc)。

「對象從不顯示」聲明使我對實際問題的內容有些不確定。

無論哪種方式,一種方法來糾正這是消除相機SurfaceView。您可以將相機預覽發送到SurfaceTexture(API 11+),然後將主要GLSurfaceView上的內容呈現爲紋理四邊形。這個例子可以在Grafika的「來自相機的紋理」活動中找到。

+0

縫是使用SurfaceTexture一個好主意。但我不明白它是如何工作的......你有一個簡單的例子來解釋如何使用SurfaceView並鏈接到主GLSurfaceView? – Mekiis

+0

Grafika中的「來自相機的紋理」(從答案中鏈接而來)相對比較簡單 - 涉及很多部分,所以它不會變得微不足道。我在那裏使用普通的SurfaceView而不是GLSurfaceView。 「Show + capture camera」活動使用GLSurfaceView,並記錄相機輸出,但它更復雜一些(部分原因是GLSurfaceView正在管理渲染線程,並且活動想要使用共享的EGL上下文)。 FWIW,解釋在這裏:http://source.android.com/devices/graphics/architecture.html – fadden