在两个渲染线程之间共享OpenGL纹理?

时间:2012-08-18 09:52:10

标签: android opengl-es textures memory-optimization

我有一个接口渲染到GLSurfaceView,但在某些时候我启动另一个渲染线程,以便能够以更大的比例渲染界面的一部分(只是几个纹理),然后将它们写为sd卡的图像文件。我想知道当我启动另一个用于写入磁盘的渲染器时,是否以及如何使用我已加载到GUI渲染线程中的大型纹理?

目前我有一个非常糟糕的解决方法,就是我在加载纹理后将bmp保留在内存中,然后当我启动写入磁盘渲染器时,我只是从该位图创建一个新纹理。但是,当我觉得它确实不应该是必要的时候,显然这既耗时又耗费内存,因为位图实际上已经在GPU中加载为大纹理。

1 个答案:

答案 0 :(得分:0)

您可以使用共享的上下文。在为第二个线程创建上下文时,将第一个上下文作为shared_context参数传递。然后,您可以使用与原始线程中相同的句柄访问第二个线程中的纹理。