Opengl 忽略由于在“glBegin”/“glEnd”内调用“wglGetProcAddress”而导致的GL\u无效\u操作可以吗?

Opengl 忽略由于在“glBegin”/“glEnd”内调用“wglGetProcAddress”而导致的GL\u无效\u操作可以吗?,opengl,Opengl,我最近发现,在调用glBegin(…)和glEnd()之间调用wglGetProcAddress(…)会产生一个GL\u无效\u操作。显然,(来自): MS opengl32.dll库显然从 wglGetProcAddress()。如果我们在glBegin/End()中,则glFlush 将调度到_mesa_generic_nop(),我们将生成 GL\u无效\u操作错误 生成的函数指针为空,但使用GetProcAddress(…)重试会生成一个有效的函数指针,并且程序似乎可以愉快地继续 我的问

我最近发现,在调用
glBegin(…)
glEnd()
之间调用
wglGetProcAddress(…)
会产生一个
GL\u无效\u操作。显然,(来自):

MS opengl32.dll库显然从 wglGetProcAddress()。如果我们在glBegin/End()中,则glFlush 将调度到_mesa_generic_nop(),我们将生成 GL\u无效\u操作错误

生成的函数指针为空,但使用
GetProcAddress(…)
重试会生成一个有效的函数指针,并且程序似乎可以愉快地继续

我的问题:忽略错误(即
glGetError()
)可以吗



编辑:我为什么要这样做?加载OpenGL函数是一项开销,而在较慢的硬件上延迟加载是一个性能问题(例如在glbinding中使用这种方法)。如果您有多个上下文,并且只想在每个上下文中使用功能的一个子集,或者如果您经常创建/删除上下文,这将是一件大事。我的代码通过一个动态备份的存储来实现每个API函数,因此卸载的函数也可以节省空间,这在较小的系统上很重要,在许多上下文中也很重要。

我无法判断您是否发现了未定义的行为或只是一个错误实现的规范。在这两种情况下,这些事情可能会很容易与未来版本的库有关,我认为你应该找到另一种方法来获取OpenGL函数指针,而不是在绘制图形的中间。< / P>你可以切换到VBOS……DIETrEHPP我正在编写一个GL加载库,所以,这不是相关的。为什么不只是在一开始就加载所有的函数,那样在程序执行的中间不需要<代码> WGGET Pro(?)/>代码> @ IMALETT:使用<代码> GETPro()/代码>与<代码> WGGET PrimaDeServer()/<代码>不一样,并且只有后一个应该用于查询GL扩展函数指针。请注意,这不仅是一个理论问题,而且在实践中也可能失败得很惨。@derhass:为什么?
wglGetProcAddress()
有什么问题吗?