は、include-fileオプションを持っていないファイルは、私が「含まに#pragma」パーサを使用してこれを追加しようとしています。 (私は一度だけ実装したいが、Ken Perlinの滑らかなステップのような多くの異なるシェーダで使用するいくつかの一般的なメソッドを持っているので、これが必要です)のOpenGL/GLSL - サポートするために、複数のソースでglShaderSourceを使用してはGLSL以来
インクルードファイルを取得するためにシェーダファイルを解析すると問題ありません。 しかし、複数のソースファイルを使ってShaderSourceを設定すると、私はいつも問題にぶつかります。私の主なシェーダは通常 "#version 330"で始まり、#バージョンラインは常にシェーダの最初のラインでなければならないので、glShadersourceに渡された文字列の配列の最初のものとしてメインファイルを追加することができますそれはすべてのインクルードファイルです。 しかし、コンパイラは、それは私のメインのファイルが使用している機能を知らないと文句を言いよう、彼らは基本的に後の私のメインのファイルを連結することがありますので、その後、私のメインのファイルは、これらの含まれるファイルで実装任意の機能を使用することはできません。仕事にそれを得るために私は考えることができる
唯一の方法は、再帰的に適用する(ファイルのファイル内容でプラグマ行が含まれることをを交換、メインファイルを読み込むインクルードは、プラグマが含ま解析し、その後、することです他のファイルそのものを含む可能性のあるインクルードされたすべてのファイルと同じ方法ですが)、コンパイルエラーの行番号はもはやメインファイルの実際の行番号と一致しません。
は、誰もが働き、linenumbersを保つGLSLための機能「を含む」のいくつかの並べ替えを設定していますか?もしそうなら - どう?
あなた、先生は、天才です!なぜ私はそれについて考えなかったのか分かりませんが、これが私のために行く方法になると思います。 \ o/ – Pygmy