4
我已經搜索了一個明確的答案,但無濟於事。 OpenGL規範似乎對此沒有提及,但這可能是由於我沒有閱讀它們的經驗。 我不關心實現如何處理這個問題。 謝謝。OpenGL:將着色器附加到處於有效鏈接狀態的程序是否合法?
我已經搜索了一個明確的答案,但無濟於事。 OpenGL規範似乎對此沒有提及,但這可能是由於我沒有閱讀它們的經驗。 我不關心實現如何處理這個問題。 謝謝。OpenGL:將着色器附加到處於有效鏈接狀態的程序是否合法?
從here:
雖然程序對象正在使用中,應用程序可以自由地修改 附着色器對象,編譯附着色器對象,附上 附加着色對象,和分離或刪除着色器對象。這些操作都不會影響 當前狀態的可執行文件。然而,重新鏈接程序對象,它是目前 在使用中會安裝該程序對象作爲當前 渲染狀態,如果鏈接操作是成功的一部分......
所以,是的,它是合法的,它會除非您重新鏈接程序,否則無效。
並重新鏈接當前程序自動安裝新版本。
謝謝。看起來重要的概念是當前狀態,並且你可以對與程序關聯的「外部」對象做很多事情,而不改變當前上下文的狀態。只有當您鏈接程序時,更改纔會成爲新當前狀態的一部分。我應該猜測,在重新鏈接之後,不需要調用glUseProgram,因爲程序對象是「狀態」的一部分,並且不受重新鏈接影響?這個OpenGL狀態的東西很難從文檔中看到! – UglyCoder 2015-04-03 20:00:07
當它準備就緒(鏈接過程)時,將其視爲「我們準備一個包」,然後「我們將其副本發送給GPU」。 – Orace 2015-04-04 06:32:15
Gotcha。很好,簡單的看着它。謝謝。我發現看比文檔更好的文檔。它只是知道什麼函數調用改變狀態。 – UglyCoder 2015-04-04 08:52:24