glbadcontext的可能原因是什么?
它可以与OpenGL版本,GPU,mesa库(在Linux中),内存损坏或其他相关吗?
我对OpenGL没有经验,我想对该错误有一个清晰的了解。
在OpenGL中没有“坏上下文”错误。出现GL_CONTEXT_LOST
错误。这是什么错误?
可编程性的后果之一是人们可以使用可编程硬件编写bad程序。因此,随着GPU变得更具可编程性,它们现在变得容易受到GPU程序执行某些愚蠢操作时出现的问题的影响。在现代操作系统中,当CPU进程执行错误操作时,操作系统将终止该进程。在现代操作系统中,当GPU“进程”开始执行错误的操作(不允许访问内存,无限循环,其他损坏)时,操作系统将重置GPU。
不同之处在于,GPU重置取决于它的原因和特定的硬件,通常会影响使用GPU的all程序,而不仅仅是影响了坏事的程序。 OpenGL通过声明OpenGL上下文已丢失来报告这种情况。
函数glGetGraphicsResetStatus
可用于查询负责GPU重置的一方。但这只是一个半量值,因为它告诉您的是是您的上下文还是其他人导致了重置。并且不能保证它会告诉您that,因为glGetGraphicsResetStatus
可以返回GL_UNKNOWN_CONTEXT_RESET
,这表示无法确定是谁出了错。
最终,出于多种原因,可能会发生GPU重置。除了确保您的代码不会执行会导致错误的操作外,您所能做的就是接受它们可能发生并在它们发生时进行处理。