我知道在上下文初始化后必须将GLFWGetProcAddress
函数传递给GLADLoadGLLoader
函数。 GLFW文档说,这个函数返回当前上下文的指定函数的地址。 基于这些信息,如果我想在另一个上下文上绘制一些东西,我必须键入
glfwMakeContextCurrent(*window*)
gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)
每次我要更改绘图上下文时。 但是,只需用GLFWMakeContextCurrent
函数更改上下文就足够了。 文件备注
不保证给定函数的地址在上下文之间是相同的。
但是看起来返回的地址在上下文之间实际上是相同的(至少在windows中)。 问题是,真正的方法是什么,以实现稳定和便携的行为?
技术上是:从OpenGL上下文检索的函数指针仅对该特定上下文有效。 然而,出于大多数实际目的,您可以忽略这一点。 如果两个上下文可以共享对象,那么它们几乎肯定共享函数指针。
如果要考虑函数指针不能跨上下文共享的情况,最好的选择是编写一个专门用于处理这种情况的加载器。 例如,您可以修改GLAD,将OpenGL函数放在一个结构中,然后将函数加载到不同的结构中,用于不同的上下文。