1

问题是关于 OpenGL ES 2.0 和 EGL 1.4。

我试图了解调用后eglTerminate是否对 GL 命令的行为有规范要求。我的意思是如果有任何 GL 错误或者它可能是一个例外。

在这种情况下是否有任何预期行为的定义,或者 GL 命令是否应该完全不受 EGL 命令的影响?

谢谢

4

1 回答 1

2

调用 eglTerminate 标记与您要终止的 EGLDisplay 关联的所有 EGL 资源以进行删除。这包括任何表面和上下文,在您的情况下,它们肯定会影响 OpenGL ES 上下文的行为。

关于预期行为,您所遵循的规范措辞如下(来自http://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf - eglTerminate,第 17 页):

使用绑定上下文和表面(即继续向绑定的客户端 API 上下文发出命令)不会导致应用程序中断或终止,但呈现结果未定义,客户端 API 可能会产生错误。

即,如果在您终止显示时您的上下文仍然是当前的,则在该上下文上进行的任何后续 OpenGL ES 调用都是未定义的——它们可能会引发 OpenGL ES 错误,或导致不正确的渲染,但不应导致异常。

于 2014-05-01T00:23:29.757 回答