我想创建一个NSOpenGLContext,初始化我的渲染引擎,然后使用第一个上下文中的共享参数创建新的NSOpenGLContexts。这是行不通的,在我继续之前,上下文之间究竟分享了什么?该文档有点亮:两个NSOpenGLContexts究竟分享了什么?
共享上下文共享共享启动前后创建的所有纹理对象,显示列表,顶点程序,片段程序和缓冲区对象。对象的状态也是共享的,但不是其他上下文状态,例如当前颜色,纹理坐标设置,矩阵和照明设置,栅格化状态以及纹理环境设置。
当我创建我的第一个NSOpenGLContext,我初始化我的渲染引擎,这使得下列类型的呼叫:
- glGenTextures,glActiveTexture,glBindTexture
- glEnable
- glUseProgram,glGetAttribLocation,glGetUniformLocation
- glUniform1i,glUniform3f
- glGenVertexArraysAPPLE,glBindVertexArrayAP PLE,glBindBuffer
- glVertexAttribPointer,glEnableVertexAttribArray
其中大多数是出于三个类型的任务 - 创造顶点和着色器程序,存储参考ATTRIB和计划内统一的位置,创造顶点数组,并结合几纹理。
您希望所有这些项目能够在上下文中共享吗?