OpenGL glGenTextures多线程无法正常工作(使用SDL)

时间:2013-09-04 16:29:59

标签: multithreading opengl textures sdl

我有id喜欢opengl纹理识别器的变量。我使用glGenTextures (1, &id)生成它并且它工作正常。问题是当我在另一个线程中调用glGenTextures函数时。它总是返回0并且不生成纹理。我认为这是因为opengl上下文不同。

我使用SDL加载图像,然后将其传递给glTexImage2D的纹理。我正在尝试在线程中创建一个新的SDL_GLContext以与主线程共享它,但我不知道如何制作它。我可以用id修改线程内的id=2,然后读取并打印它,但我不能用glGenTextures进行修改,我无法生成我需要的纹理。

1 个答案:

答案 0 :(得分:3)

OpenGL上下文一次只能在一个线程中激活。您无法在多个线程中绑定单个OpenGL上下文。但是,可以创建第二个OpenGL上下文,该上下文共享OpenGL资源命名空间并将其绑定到另一个线程中。 使用像素缓冲区对象(PBO)将一些OpenGL内存映射到进程地址空间,并从另一个线程填充该内容。