通常、質問はヘッダーにあります。
関数の使い方がわかりませんGetActiveUniform
。
public void GetActiveUniform(uint program,
uint index,
int bufSize,
int[] length,
int[] size,
uint[] type,
string name);
私の試みは次のようになります(すべてがコンパイルされ、リンクされています):
int[] numberOfUniforms = new int[1];
Gl.GetProgram(programId, ProgramParameter.ActiveUniforms, numberOfUniforms);
int[] uniformNameMaxLength = new int[1];
Gl.GetProgram(programId, ProgramParameter.ActiveUniformMaxLength, uniformNameMaxLength);
int unifromCount = numberOfUniforms[0];
for (uint i = 0; i < unifromCount; i++)
{
var uniformSize = new int[1];
var unifromLength = new int[1];
var uniformType = new uint[1];
string uniformName = "";
Gl.GetActiveUniform(programId, i, uniformNameMaxLength[0], unifromLength, uniformSize, uniformType, uniformName);
}
頂点シェーダー:
#version 150 core
in vec3 in_Position;
out vec3 pass_Color;
uniform vec3 color;
void main(void) {
gl_Position = vec4(in_Position, 1.0);
pass_Color = color;
}
呼び出し後、適切なuniformSize、長さ、およびタイプを取得しますが、名前は取得しません。