2012-05-25 20 views
16

中の#includeを使用するには、私はGLSLシェーダファイルを含めるように#includeマクロを使用するためにwan't、と私は#includeマクロARB_shading_language_includeextensionサポートがあると聞きました。誰でも私に#includeマクロの使用方法を示すコードスニペットを与えることができますか?はどのようにGLSLのサポートARB_shading_language_include

答えて

35

shading_language_includeについて最初に理解しなければならないことは、ではありません。ディスクから "#includeファイル"ではありません。 OpenGLはどのファイルがあるか分からない。ファイルシステムの概念はありません。

代わりに、を事前ロードのすべてのファイルに含める必要があります。したがって、シェーダ文字列と、文字列をロードしたファイル名があります。基本的にOpenGL内に仮想ファイルシステムを構築する必要があります。

glNamedStringARBを使用して、文字列を仮想ファイルシステムにアップロードします。文字列の名前は完全なパス名です。

仮想ファイルシステムを作成したら、コンパイルした各シェーダーに対して、その拡張子を初期化する必要があります。

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

#extension声明の後、あなたは#includeあなたが合うこととして。

+0

"<type>SHADER_INCLUDE_ARBでなければなりません"。 – toolchainX

+0

'glNamedStringARB'に関するドキュメントは見つかりません。この場合の最初の( 'type')パラメータは何でしょうか? – 0xbadf00d

0

私は0xbadf00dの質問に答えたいと思いますが、評判が足りません。 ARB/shading_language_include.txtから

: あなたは、簡潔かつ説明し、正確なTHXを与える

関連する問題