web-dev-qa-db-ja.com

glslサポートで#includeを使用する方法ARB_shading_language_include

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

18
toolchainX

shading_language_include について最初に理解する必要があるのは、ではないことです。 「私は#include afilefrom thedisk。 "OpenGLはファイルが何であるかを知らず、ファイルシステムの概念もありません。

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

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

仮想ファイルシステムを構築したら、コンパイルするシェーダーごとに、拡張機能を初期化する必要があります。

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

後に #extensionステートメント、あなたは#includeあなたが適切と思うように。

44
Nicol Bolas

0xbadf00dの質問に答えたいのですが、評判が足りません。

From ARB/shadowing_language_include.txt : "<type> でなければなりません SHADER_INCLUDE_ARB "

5
nils