我有一个程序可以处理1920x1080大小的纹理,并在多线程环境中通过SDL_UpdateTexture
更新纹理。线程之间的纹理是“平铺”的,因此线程1将更新与线程2不同的区域。例如,t1
将更新区域0,0,64,64
,而t2
将更新{{1} }。
在这种情况下可以使用65, 65, 128, 128
而不进行任何锁定,以便线程可以同时更新纹理吗?
答案 0 :(得分:2)
看看
Multithreaded Rendering on OpenGL
但是,简要地说:GL不是线程安全的(甚至不是线程感知的)。在Windows上,一次不能在一个以上的线程上激活上下文,因此如果不同步线程就无法更新纹理(这违背了多线程的目的)。我敢打赌,在Linux上也是一样。