Kindle の EGL 実装にバグがあるようです。理由を説明してから、回避策を提案します。
デフォルトのスワップ間隔は確かに 1 です。EGL 1.4 仕様のセクション 3.9.3 ポスティング セマンティクスから:
EGLBoolean eglSwapInterval(EGLDisplay dpy, EGLint
interval);
[...]
The default swap interval is 1.
そして、そのセクションはまた述べています
interval is silently clamped to minimum and
maximum implementation dependent values before being stored; these values are
defined by EGLConfig attributes EGL_MIN_SWAP_INTERVAL and EGL_MAX_-
SWAP_INTERVAL respectively.
したがって、実装でサポートされていなくても、eglSwapInterval
を受け入れる必要があります。interval=1
エラーなしでサイレントにクランプするには、実装が必要です。
が範囲外のEGL_BAD_PARAMETER
ときに Kindle が発するのではないかと思います。で範囲を検索できます。interval
[EGL_MIN_SWAP_INTERVAL, EGL_MAX_INTERVAL]
eglGetConfigAttrib
回避策として、アプリケーションでスワップ間隔の境界を照会し、必要な間隔をそれらの境界に手動で固定してからeglSwapInterval
.
Clyde への返信: Android などの複合環境でも、スワップ間隔には意味があり、期待どおりの動作をします。vsync 間隔が 60Hz で、コンテキストのスワップ間隔が 2 の場合、eglSwapBuffers は 30Hz にスロットルします。