触摸opengles10和opengles20

时间:2017-06-12 21:32:31

标签: java android opengl-es opengl-es-2.0

我正在编写一个3D查看器,它可以加载一些3D文件并将其简单地显示在GLSurfaceView上。

我最初在opengles10中实现了查看器,但由于这是一个固定的函数api,我无法使用着色器,因为已经移动到opengles20。

这里有几个问题:

当我在我的HTC欲望中加载与opengles10类似的模型时,事情很快,触摸事件在数学上是预期的,模型可以轻松地旋转/平移/缩放。

然而,当我使用opengles20时,我的触摸事件会导致地狱。我知道这是因为在onFling事件中,我用阻尼因子旋转我的模型。这在所有情况下都很顺利。

所以:

1)为什么在opengles20中我需要担心vsyncs和双缓冲以及编舞?

2)如果缓冲区不可用,我如何用opengl实现双缓冲或交换缓冲区?

3)这是性能差异的唯一原因吗?

4)最后,我该怎么做才能将这两个等同起来?如果我的UI是滞后的,那么从opengles10升级到opengles20并不是一个很好的更新

1 个答案:

答案 0 :(得分:0)

在这里跟进我自己的问题:

我决定将RENDERMODE_CONTINUOUSLY用于我的渲染模式;这允许opengl随时交换缓冲区并重新绘制。

我还移动了将旋转/平移应用于绘图循环外的矩阵的逻辑。

最后,为了让所有这些都能很好地发挥作用,引入了一个互斥锁来同步,这样更新旋转/转换对于opengles线程来说是线程安全的