它看起来像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
。需要执行该操作才能无误地将其夹紧。
我怀疑当interval
超出[EGL_MIN_SWAP_INTERVAL, EGL_MAX_INTERVAL]
的范围时,Kindle会发出EGL_BAD_PARAMETER
。您可以通过eglGetConfigAttrib
发现查询范围。
作为一种解决方法,我建议您的应用程序查询交换间隔范围,并在调用eglSwapInterval
之前手动将期望的间隔限定为这些范围。
回复克莱德:即使在像Android这样的合成环境中,交换时间间隔的确有意义并且符合您的期望。如果vsync时间间隔为60Hz并且上下文的交换时间间隔为2,则eglSwapBuffers将节流至30Hz。
你怎么知道它什么也不做?你能否介绍一些关于这方面的文档?谢谢。 – user2096853 2013-03-14 19:11:42