2013-03-21 4 views
6

プログラムに添付されているシェーダにアクセスする方法はありますか?OpenGLプログラムにシェーダを添付する

vertexShader = getVertexShaderFromProgram(program); 

(私は私のプログラムを検証し、私の関数内でシェーダーのコンパイル状況をログに記録したいと思いますが、私は唯一のプログラムへの参照を保持し、ないシェーダ:それは私のような何かを行うことができ、プログラム与えられた、あります)

答えて

8
  1. glGetAttachedShaders()与えられたプログラムオブジェクトに付けられたシェーダの名前を取得する。

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

  3. glGetShaderiv(..., GL_SHADER_SOURCE_LENGTH, ...)各シェーダ名には、ソースの長さが分かります。

  4. glGetShaderSource()添付された各シェーダのソース文字列を取得する。

EDIT:あなたが必要とするすべてのシェーダ名&タイプである場合は、シェーダオブジェクトが削除された場合はどうなりますステップ2.

+0

後に停止することができますか? – Ben

関連する問題