OpenGL抱怨枚举的使用

OpenGL抱怨枚举的使用,opengl,Opengl,我发现了一个错误,就是这样: Source=DEBUG_SOURCE_API Type=DEBUG_TYPE_ERROR ID=3200 Severity=DEBUG_SEVERITY_HIGH Message=Using glGetIntegerv in a Core context with parameter <pname> and enum '0xbb1' which was removed from Core OpenGL (GL_INVALID_ENUM) Source=

我发现了一个错误,就是这样:

Source=DEBUG_SOURCE_API Type=DEBUG_TYPE_ERROR ID=3200 Severity=DEBUG_SEVERITY_HIGH Message=Using glGetIntegerv in a Core context with parameter <pname> and enum '0xbb1' which was removed from Core OpenGL (GL_INVALID_ENUM)
Source=DEBUG_SOURCE_API Type=DEBUG_TYPE_ERROR ID=3200 Severity=DEBUG_SEVERITY_HIGH Message=Using glGetIntegerv in a Core context with parameter <pname> and enum '0xd3b' which was removed from Core OpenGL (GL_INVALID_ENUM)
OpenGL error occured: A GLenum argument was out of range.
然而,经过一些额外的研究,我发现这比我想象的还要奇怪,因为我的代码中有一些东西,当OpenGL出现错误时,它会停止调试构建中的调试器

#if DEBUG
    Debug.HoldOnGLError();
#endif
这是在每次OpenGL调用后插入的,但它不是在
glGetIntegerv
处停止,而是在随机方法处停止,主要是一些
glBindBuffer
glBindFramebuffer

我不知道为什么会出现错误,如果有任何想法,我都会很高兴

编辑 忘记提及错误仅在一段时间后出现,并且仅在Visual Studio的调试模式下出现。

OpenGL调试消息(通过回调)仅在OpenGL-4.3中引入。客户机属性堆栈(和朋友)(这些枚举所涉及的)是OpenGL-1.1的功能,OpenGL-3已经弃用,并且仅在兼容性配置文件中可用。如果您有一个核心概要文件上下文,那么相关的枚举确实无法使用

程序中的某些内容(库或遗留代码)使用[client]属性堆栈,从而触发此错误。您应该找到这是哪一部分,因为属性堆栈用于保存和恢复OpenGL状态,如果相关代码在完成后依赖该属性来恢复OpenGL状态,则可能会使OpenGL上下文处于不希望的状态

(服务器)属性堆栈(和朋友)也是如此。

OpenGL调试消息(通过回调)仅在OpenGL-4.3中引入。客户机属性堆栈(和朋友)(这些枚举所涉及的)是OpenGL-1.1的功能,OpenGL-3已经弃用,并且仅在兼容性配置文件中可用。如果您有一个核心概要文件上下文,那么相关的枚举确实无法使用

程序中的某些内容(库或遗留代码)使用[client]属性堆栈,从而触发此错误。您应该找到这是哪一部分,因为属性堆栈用于保存和恢复OpenGL状态,如果相关代码在完成后依赖该属性来恢复OpenGL状态,则可能会使OpenGL上下文处于不希望的状态

(服务器)属性堆栈(和朋友)也是如此。

OpenGL调试消息(通过回调)仅在OpenGL-4.3中引入。客户机属性堆栈(和朋友)(这些枚举所涉及的)是OpenGL-1.1的功能,OpenGL-3已经弃用,并且仅在兼容性配置文件中可用。如果您有一个核心概要文件上下文,那么相关的枚举确实无法使用

程序中的某些内容(库或遗留代码)使用[client]属性堆栈,从而触发此错误。您应该找到这是哪一部分,因为属性堆栈用于保存和恢复OpenGL状态,如果相关代码在完成后依赖该属性来恢复OpenGL状态,则可能会使OpenGL上下文处于不希望的状态

(服务器)属性堆栈(和朋友)也是如此。

OpenGL调试消息(通过回调)仅在OpenGL-4.3中引入。客户机属性堆栈(和朋友)(这些枚举所涉及的)是OpenGL-1.1的功能,OpenGL-3已经弃用,并且仅在兼容性配置文件中可用。如果您有一个核心概要文件上下文,那么相关的枚举确实无法使用

程序中的某些内容(库或遗留代码)使用[client]属性堆栈,从而触发此错误。您应该找到这是哪一部分,因为属性堆栈用于保存和恢复OpenGL状态,如果相关代码在完成后依赖该属性来恢复OpenGL状态,则可能会使OpenGL上下文处于不希望的状态


(服务器)属性堆栈(和朋友)也是如此。

我发现这不是我的错。AMD的错误,实际上AMD Gaming Evolutioned使用旧代码作为覆盖层,这也是它在一段时间后崩溃的原因,因为覆盖层在几秒钟后出现


退出客户端解决了问题。

我发现这不是我的错。AMD的错误,实际上AMD Gaming Evolutioned使用旧代码作为覆盖层,这也是它在一段时间后崩溃的原因,因为覆盖层在几秒钟后出现


退出客户端解决了问题。

我发现这不是我的错。AMD的错误,实际上AMD Gaming Evolutioned使用旧代码作为覆盖层,这也是它在一段时间后崩溃的原因,因为覆盖层在几秒钟后出现


退出客户端解决了问题。

我发现这不是我的错。AMD的错误,实际上AMD Gaming Evolutioned使用旧代码作为覆盖层,这也是它在一段时间后崩溃的原因,因为覆盖层在几秒钟后出现


退出客户端可以解决问题。

您是否使用某种框架来进行这些调用?如果您能提供有关您正在使用的平台/环境/工具的更多详细信息,可能会有所帮助。在任何情况下,如果在第一次调用OpenGL时触发了错误检查,您可能可以通过调用
glGetError()
首先清除错误状态来解决它。实际上,我自己的框架最完美。这是C#有自己的标题。使用Windows7,AMDR9290。问题是,调用以不同的方法随机出现,这根本没有意义,也无助于调试。说真的,是谁投票结束了这个问题?这是一个非常有效的OpenGL问题。这不是“我的代码不工作”的投诉。伙计们,如果你不明白这个问题,或者如果有疑问,就让我来
#if DEBUG
    Debug.HoldOnGLError();
#endif