在我的遊戲中有一個渲染模塊可以處理着色器,幀緩衝區和繪圖。現在我想分別封裝這三個任務的邏輯。我的想法是,我將渲染模塊分成三個模塊。我這樣做是爲了降低代碼複雜度並輕鬆實現實時着色器重新加載,但對於我的問題並不重要。用空着色器程序繪製是否有效?
繪圖模塊將創建空着色器對象glCreateProgram()
,並將它們與源文件的路徑一起全局存儲。着色器模塊會檢查它們並通過加載源文件,編譯和鏈接來創建實際的着色器。
但是在這個概念中,可能會出現渲染模塊已經想要繪製但着色器模塊沒有創建實際着色器的情況。所以我的問題是,繪製一個空的着色器程序是否有效?在這種情況下,屏幕會變黑是完全可以接受的。創建着色器應該很快就緒,所以延遲可能不明顯。
用空的着色器程序繪製是否有效?我怎樣才能實現其他地方加載着色器的想法呢?
這是如何「降低代碼複雜度」?你有3個獨立的系統獨立運作。如果你想實現實時着色器重新加載......那麼只需將引用粘貼到程序旁邊的着色器。這似乎是構建渲染系統的高度過度複雜的方式。 – 2013-03-17 14:34:17