30

glsl にシェーダー ファイルを含めるためにマクロを使用したくありません。マクロをサポートする拡張機能#includeがあると聞きました。マクロの使用方法を示すコード スニペットを教えてくれる人はいますか?ARB_shading_language_include #include#include

4

2 に答える 2

56

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ん。

于 2012-05-25T14:20:28.000 に答える
10

0xbadf00d さんの質問に答えたいのですが、評判が悪いです。

ARB/shading_language_include.txtから: "<type>でなければなりませんSHADER_INCLUDE_ARB"

于 2016-07-20T13:46:49.000 に答える