プログラムにアタッチされたシェーダーにアクセスする方法はありますか? つまり、プログラムが与えられた場合、次のようなことができますか?
vertexShader = getVertexShaderFromProgram(program);
(プログラムを検証する関数内でシェーダーのコンパイル ステータスをログに記録したいのですが、シェーダーではなく、プログラムへの参照のみを保持します。)
glGetAttachedShaders()
指定されたプログラムオブジェクトにアタッチされているシェーダーの名前を取得します。
glGetShaderiv( ..., GL_SHADER_TYPE, ... )
シェーダーのタイプ(頂点、ジオメトリ、フラグメント)を取得します。
glGetShaderiv( ..., GL_SHADER_SOURCE_LENGTH, ... )
ソースの長さを把握するために、各シェーダー名に。
glGetShaderSource()
接続されている各シェーダーのソース文字列を取得します。
編集:必要なのがシェーダーの名前とタイプだけである場合は、手順2の後で停止できます。