2

いくつかのパラメーターを入力として取り、独自のフラグメント シェーダー文字列を生成し、それをコンパイルしてリンクし、フラグメント シェーダーとして使用するプログラムを作成する予定です (プログラムの開始時に 1 回だけ実行されます)。私はコンピュータ グラフィックスの専門家ではないので、これが標準的な方法かどうかはわかりませんが、興味深いアプリケーション (必ずしもグラフィックス アプリケーションではなく、おそらく計算アプリケーション) の可能性があると確信しています。

私の質問は、OpenGL のシェーダーのコード サイズの制限はどのくらいですか。つまり、OpenGL がグラフィック プロセッサ上のプログラムに合理的に割り当てることができるメモリの量はどれくらいですか?

4

1 に答える 1

3

コードサイズの制限はありません。OK、ありますが:

  1. OpenGL は、次の理由でクエリを実行する方法を提供しません。
  2. このような数値は、GLSL で直接制御できるものには変換されないため、意味がありません。

長い GLSL シェーダーはコンパイルできるかもしれませんが、短いシェーダーはコンパイルできません。なんで?コンパイラは長いシェーダーを最適化してサイズを縮小できた可能性があるため、短いシェーダーは多くのオペコードに拡張されました。要するに、GLSL は高レベルすぎて、そのような制限を効果的に定量化することができません。

いずれにせよ、GL 2.x クラスのハードウェアの制限を考慮すると、そうしようとしている場合や GPGPU の作業を行っている場合を除き、おそらく長さの制限に達することはありません。

于 2013-01-30T14:08:19.607 に答える