名称
glGetGraphicsResetStatus — 检查渲染上下文是否由于软件或硬件问题而丢失
C 规范
GLenum glGetGraphicsResetStatus( void);
描述
某些事件可能导致GL上下文的重置。这种重置会导致所有上下文状态丢失,并要求应用程序在受影响的上下文中重新创建所有对象。
glGetGraphicsResetStatus可以返回以下常量之一:
GL_NO_ERROR
指示自上次调用以来GL上下文尚未处于重置状态。
GL_GUILTY_CONTEXT_RESET
指示已检测到归因于当前GL上下文的重置。
GL_INNOCENT_CONTEXT_RESET
表示已检测到归因于当前GL上下文的重置。
GL_UNKNOWN_CONTEXT_RESET
指示检测到的图形重置,其原因未知。
如果返回了除GL_NO_ERROR以外的其他复位状态,并且随后的调用返回了GL_NO_ERROR,则遇到并完成了上下文复位。如果重复返回重置状态,则上下文可能正在重置。
重置通知行为是在上下文创建时确定的,可以通过使用符号常量GL_RESET_NOTIFICATION_STRATEGY调用glGetIntegerv来查询。
如果重置通知行为是GL_NO_RESET_NOTIFICATION,则实现将永远不会传递重置事件通知,并且glGetGraphicsResetStatus将始终返回GL_NO_ERROR。
如果该行为是GL_LOSE_CONTEXT_ON_RESET,则图形重置将导致所有上下文状态丢失,需要重新创建所有关联的对象。在这种情况下,glGetGraphicsResetStatus可能返回上述任何值。
如果在上下文中发生图形重置通知,则通知也必须在与该上下文共享对象的所有其他上下文中发生。
在上下文上发生图形重置后,该上下文(或与该上下文共享的任何上下文)上的后续GL命令将生成GL_CONTEXT_LOST错误。这样的命令不会有副作用(特别是不会修改指针为查询结果传递的内存),也不会无限期地阻塞或导致应用程序终止。此行为有两个重要的例外:
在图形重置后,glGetError和glGetGraphicsResetStatus会正常运行,以便应用程序可以确定发生了重置,以及何时可以安全地销毁并重新创建上下文。
任何可能导致轮询应用程序无限期阻塞的命令都将生成GL_CONTEXT_LOST错误,但也将向应用程序返回指示完成的值。这些命令包括:
具有pname GL_SYNC_STATUS的glGetSynciv会忽略其他参数,并返回GL_SIGNALED的值。
pname为GL_QUERY_RESULT_AVAILABLE的glGetQueryObjectuiv会忽略其他参数,并以参数形式返回TRUE。
API 支持版本
函数名 2.0 3.0 3.1 3.2
glGetGraphicsResetStatus - - - ✔
另见
glGetError glGetIntegerv, glGetQueryObjectuiv glGetSynciv
版权
https://www.khronos.org/registry/OpenGL-Refpages/es3/html/glGetGraphicsResetStatus.xhtml
Copyright © 2014 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.