2017-06-12 99 views
0

我正在寫一個3D查看器,它加載一些3D文件,並簡單地顯示在GLSurfaceView上。opengles10和opengles20之間的觸摸差異

我最初在opengles10中實現了查看器,但是由於這是一個固定函數api,我無法使用着色器,並且因爲已經轉移到了opengles20。

這裏有幾個問題:

當我加載同類機型與我的HTC渴望opengles10,事情很快,觸摸事件的數學期望和模型旋轉/轉換/縮放輕鬆。

但是,當我使用opengles20時,我的觸摸事件會導致地獄。我知道這是因爲在onFling事件中,我用阻尼因子旋轉模型。這在所有情況下都很順利。

所以:

1)爲什麼在opengles20做我需要擔心vsyncs和雙緩衝和編舞?

2)我如何實現雙緩衝或交換緩衝區與opengl如果緩衝區不可用?

3)這是性能差異的唯一原因?

4)最後,我可以做什麼等同於這兩個?從opengles10到opengles20的升級是不是一個真正的大更新,如果我的UI是laggy

+0

您可能需要提供的示例代碼,你在做什麼因爲觸摸事件與OpenGL ES沒有特別的關係。 –

+0

只需爲onScroll方法設置一個基於距離X和距離Y的旋轉值,然後調用requestRender() – Arjun

+0

不幸的是,我擔心要解決您的問題需要至少一個[MVCE](https://stackoverflow.com/help/mcve )。正如你所說的,OpenGL ES 2.0實現中的某些東西並不完全正確,但沒有代碼,沒有人能夠說明做出了什麼假設。 –

回答

0

對我自己的問題在這裏隨訪:

我已經決定RENDERMODE_CONTINUOUSLY用我rendermode;這允許opengl在任何時候交換緩衝區並重新繪製。

我還將我的邏輯應用於繪圖循環之外的旋轉/平移到矩陣。

最後,讓這一切很好地發揮,引入了一個互斥體同步的,這樣,更新轉/翻譯是線程對opengles線程安全