如何在 linux 上为多线程创建第二个 OpenGL 上下文?
How to create a second OpenGL context for multithreading on linux?
我正在使用 GLFW 创建我的 window 并且我使用的是 OpenGL 4.5。
创建第二个 OpenGL 上下文以与主线程共享对象以实现多线程(即每个线程一个上下文)的最 OS 不可知的方法是什么(如果可能)。
我不知道这个方法是否足够 OS 不可知,但在我的应用程序中我只是使用另一个隐藏的 window:
//'pWindow' is the main GL context here...
glfwWindowHint(GLFW_VISIBLE, GL_FALSE);
pGLctx[0] = glfwCreateWindow(sw, sh, "slave0", NULL, pWindow);
glfwMakeContextCurrent(pGLctx[0]); //... to make it current in calling thread...
这对我有用。
我不得不在这里说,一般来说渲染和多线程(在 CPU 上)可能是一个噩梦,所以确保一个人需要它是至关重要的。
我正在使用 GLFW 创建我的 window 并且我使用的是 OpenGL 4.5。
创建第二个 OpenGL 上下文以与主线程共享对象以实现多线程(即每个线程一个上下文)的最 OS 不可知的方法是什么(如果可能)。
我不知道这个方法是否足够 OS 不可知,但在我的应用程序中我只是使用另一个隐藏的 window:
//'pWindow' is the main GL context here...
glfwWindowHint(GLFW_VISIBLE, GL_FALSE);
pGLctx[0] = glfwCreateWindow(sw, sh, "slave0", NULL, pWindow);
glfwMakeContextCurrent(pGLctx[0]); //... to make it current in calling thread...
这对我有用。
我不得不在这里说,一般来说渲染和多线程(在 CPU 上)可能是一个噩梦,所以确保一个人需要它是至关重要的。