6

プログラムにアタッチされたシェーダーにアクセスする方法はありますか? つまり、プログラムが与えられた場合、次のようなことができますか?

vertexShader = getVertexShaderFromProgram(program);

(プログラムを検証する関数内でシェーダーのコンパイル ステータスをログに記録したいのですが、シェーダーではなく、プログラムへの参照のみを保持します。)

4

1 に答える 1

9
  1. glGetAttachedShaders()指定されたプログラムオブジェクトにアタッチされているシェーダーの名前を取得します。

  2. glGetShaderiv( ..., GL_SHADER_TYPE, ... )シェーダーのタイプ(頂点、ジオメトリ、フラグメント)を取得します。

  3. glGetShaderiv( ..., GL_SHADER_SOURCE_LENGTH, ... )ソースの長さを把握するために、各シェーダー名に。

  4. glGetShaderSource()接続されている各シェーダーのソース文字列を取得します。

編集:必要なのがシェーダーの名前とタイプだけである場合は、手順2の後で停止できます。

于 2013-03-21T01:59:37.423 に答える