两个NSOpenGLContexts之间共享什么?
我试图创建一个NSOpenGLContext,初始化我的渲染引擎,然后使用第一个上下文中的共享参数创建新的NSOpenGLContext。 这是行不通的,在我继续之前,上下文之间究竟分享了什么? 这个文档有点亮:
共享上下文共享在启动共享之前和之后创建的所有纹理对象,显示列表,顶点程序,片段程序和缓冲区对象。 对象的状态也是共享的,但不是其他上下文状态,例如当前颜色,纹理坐标设置,矩阵和照明设置,栅格化状态以及纹理环境设置。
当我创建我的第一个NSOpenGLContext时,我初始化了我的渲染引擎,该引擎进行了以下类型的调用:
其中大多数用于三种类型的任务 - 创建顶点和着色器程序,存储对程序内的attrib和统一位置的引用,创建顶点数组以及绑定一些纹理。
你会期望所有这些项目在上下文中共享吗?
函数调用不在上下文中共享。 只有对象。 只有一些物体。
一般而言,共享的对象是那些明显禁止在另一个上下文中重新创建的对象。 要么是由于存储大量数据,要么是相对较长的设置时间。
如果你想要一个列表,共享下列对象:
不共享的显着对象:
被共享的对象意味着它在整个上下文中保持所有状态。 所以如果你从一个上下文中修改状态,你会在另一个上下文中看到它。 但是,这也意味着如果您使用多个线程,则必须同步对共享GL对象的访问。 否则会出现竞赛状况和其他不良情况。
链接地址: http://www.djcxy.com/p/38485.html