我正在尝试在同一个程序上设置多个 OpenGL (3.3) 窗口。我创建了 2 个窗口,第二个具有第一个的共享上下文(使用 hglrc[i] = wglCreateContextAttribsARB(hdc[n_windows], hglrc[0], ctxattribs) 而第一个有 0 而不是 hglrc[ 0]),带有一个简单的循环,如:
for(unsigned i = 0; i < n_windows; ++i)
{
wglMakeCurrent(hdc[i], hglrc[i]);
glClearColor((float)rand() / RAND_MAX, (float)rand() / RAND_MAX, (float)rand() / RAND_MAX, 0.0f);
glClear(GL_COLOR_BUFFER_BIT);
SwapBuffers(hdc[i]);
}
但是只有一个窗口呈现,当我将一个窗口移动到另一个屏幕时,没有呈现的窗口现在呈现,另一个停止呈现。
这是我第一次尝试在同一个应用程序上打开多个 OpenGL 窗口,共享上下文,所以我可能做错了什么。我的代码在一个窗口中完美运行,而我的老忠实 gDEBugger 没有显示任何错误。知道我可能做错了什么吗?