OpenGL ES用にシェーダがコンパイルされていることをソースコード内でシェーダに伝える方法はありますか? #version
プリプロセッサディレクティブをOpenGL ES用に100(OpenGL ES 2.0用にシェーダをコンパイルするように)を使用して定義することができますが、OpenGL 2.1ではバージョン110です)。シェーダコード内でOpenGLバージョンがOpenGL ESであるかどうかを知ることはできますか?
#versionをアプリケーションレベルで供給される別の文字列として配置するには、これを行う最善の方法はありますか?それともシェーダー内でこれを行う方法はありますか?
もう1つの有用な関連することは、 #if version == 100
というコードをコンパイルすると、else
というコードをコンパイルすることです。これはGLSL内で可能ですか?
ありがとうございました。
Shaderを読み込み、OpenGL ESなら '#version 100'、そうでない場合は' #version 110'の前にCプログラムで見つけられませんでした。とにかくOpenGLをシェーダを文字列として渡す必要があるので、Cでバージョン処理をしないでください。 – PeterT
そう、私はそれが私がやらなければならないことだと思っていました! –