我想創建一個NSOpenGLContext,初始化我的渲染引擎,然後使用第一個上下文中的共享參數創建新的NSOpenGLContexts。這是行不通的,在我繼續之前,上下文之間究竟分享了什麼?該文檔有點亮:兩個NSOpenGLContexts究竟分享了什麼?
共享上下文共享共享啓動前後創建的所有紋理對象,顯示列表,頂點程序,片段程序和緩衝區對象。對象的狀態也是共享的,但不是其他上下文狀態,例如當前顏色,紋理座標設置,矩陣和照明設置,柵格化狀態以及紋理環境設置。
當我創建我的第一個NSOpenGLContext,我初始化我的渲染引擎,這使得下列類型的呼叫:
- glGenTextures,glActiveTexture,glBindTexture
- glEnable
- glUseProgram,glGetAttribLocation,glGetUniformLocation
- glUniform1i,glUniform3f
- glGenVertexArraysAPPLE,glBindVertexArrayAP PLE,glBindBuffer
- glVertexAttribPointer,glEnableVertexAttribArray
其中大多數是出於三個類型的任務 - 創造頂點和着色器程序,存儲參考ATTRIB和計劃內統一的位置,創造頂點數組,並結合幾紋理。
您希望所有這些項目能夠在上下文中共享嗎?