opengles10 和 opengles20 的触控区别

Touch differences between opengles10 and opengles20

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

我最初在 opengles10 中实现了查看器,但是由于这是一个固定功能 api,我无法使用着色器,因此已移至 opengles20。

这里有几个问题:

当我在 HTC desire 上使用 opengles10 加载类似模型时,一切都很快,触摸事件在数学上符合预期,并且模型 rotates/translates/zooms 很容易。

但是,当我使用 opengles20 时,我的触摸事件会造成麻烦。我知道这一点是因为在 onFling 事件中,我使用阻尼系数旋转我的模型。这在所有情况下都很顺利。

所以:

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

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

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

4) 最后,我该怎么做才能将这两者等同起来??如果我的 UI 很慢

,那么从 opengles10 升级到 opengles20 并不是一个很好的更新

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

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

我还移动了将 rotations/translation 应用于绘图循环之外的矩阵的逻辑。

最后,为了让这一切顺利进行,引入了一个互斥锁来同步,这样更新 rotations/translation 对 opengles 线程来说是线程安全的