我正在尝试创建一个 NSOpenGLContext,初始化我的渲染引擎,然后使用第一个上下文中的 share 参数创建新的 NSOpenGLContexts。这不起作用,在我继续之前,上下文之间究竟共享了什么?该文档对此有所了解:
共享上下文共享发起共享之前和之后创建的所有纹理对象、显示列表、顶点程序、片段程序和缓冲区对象。对象的状态也是共享的,但不共享其他上下文状态,例如当前颜色、纹理坐标设置、矩阵和照明设置、光栅化状态和纹理环境设置。
当我创建我的第一个 NSOpenGLContext 时,我初始化了我的渲染引擎,它会进行以下类型的调用:
- glGenTextures、glActiveTexture、glBindTexture
- gl启用
- glUseProgram、glGetAttribLocation、glGetUniformLocation
- glUniform1i, glUniform3f
- glGenVertexArraysAPPLE、glBindVertexArrayAPPLE、glBindBuffer
- glVertexAttribPointer, glEnableVertexAttribArray
其中大部分用于三种类型的任务 - 创建顶点和着色器程序,在程序中存储对属性和统一位置的引用,创建顶点数组以及绑定一些纹理。
您是否希望所有这些项目都可以跨上下文共享?