2012-05-25 80 views

回答

35

您需要了解的關於shading_language_include的第一件事是不是。它不是「I #include a 文件」。 OpenGL不知道什麼文件;它沒有文件系統的概念。

相反,您必須預加載您可能希望包含的所有文件。所以你有一個着色字符串和一個你從中加載字符串的文件名。實質上,您必須在OpenGL中構建一個虛擬文件系統。

使用glNamedStringARB可以將字符串上載到虛擬文件系統。字符串的名稱是完整的路徑名。

一旦你建立了你的虛擬文件系統,你必須對你編譯的每個着色器初始化這個擴展。

#version MY_OPENGL_VERSION //Whatever version you're using. 
#extension GL_ARB_shading_language_include : require 

#extension語句後,你可以#include你認爲合適的。

+0

你給一個簡潔而精確的解釋,THX。 – toolchainX

+0

我找不到任何關於'glNamedStringARB'的文檔。在這種情況下應該是第一個('type')參數? – 0xbadf00d