OPENGL share textures between rendering context

在opengl 不同context中共享纹理的方法是wgl函数中的wglShareLists(其他非win32平台我不知道);wglShareLists 用法很简单:

        

      BOOL wglShareLists(

          HGLRC hglrc1,     //OpenGL rendering context with which to share
                                    //Display lists
          HGLRC hglrc2,     //OpenGL rendering context to share display lists
     );

只需要传入两个rendering contex handle 即可;

在此之后,所有的glGen...函数将使用同一线性空间分配id:

GLuint glGenLists(
  GLsizei range
);

void glGenTextures(
  GLsizei n,
  GLuint *textures
);

GLAPI void APIENTRY glGenRenderbuffersEXT ( GLsizei n, GLuint * buffers );

GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei n, GLuint * buffers );

这些资源将可以在不同的context中共享。

另外msdn 的remark 段提到:

All rendering contexts of a shared display list must use an identical pixel format. Otherwise the results depend on the implementation of OpenGL used.

所有共享显示列表表的像素格式应该相同,否则将取决于opengl的实现层如何处理这个问题。

 

你可能感兴趣的:(context)