2016-12-16 11 views
0

私はそれらの均一な変数とGLSLシェーダを得た:GLSLユニフォームブロックのユニフォーム - アクセス方法は?

#version 150 
layout (shared) uniform GlobalData { 
    uniform mat4 worldMatrix; 
    uniform mat4 projMatrix; 
    // ... 
}; 

私は私のプログラムから、これら二つの行列を設定するにはどうすればよいですか?残念ながら、私はGLSLコードを編集できません。なぜなら、私は既存のアプリケーションのプラグインしか書いていないからです。

私が試した:

glGetUniformLocation(program, "GlobalData.worldMatrix"); 
glGetUniformLocation(program, "worldMatrix"); 

もない作品を。

Teh GlobalDataブロックには、私が変更したくない他のユニフォームがかなりたくさんあります。気にするのはworldMatrixだけです。

どうすればよいですか?

答えて

0

私は既存のアプリケーション用のプラグインのみを作成しています。

あなたはそうではありません。プラグインがそれらの行列を格納するために使用するバッファオブジェクトにアクセスできる場合を除き、そうではありません。

GlobalDataは、uniform blockです。 UBOのシェーダ側を表します。 C++側は、均一なデータをバッファオブジェクトに格納します。アプリケーションがあなたにそのバッファへのアクセス権を与えない限り、あなたはそれについて何もできません。

独自のバッファーをバインドすることは可能かもしれませんが、アプリケーションがバッファーをオーバーライドできるように設計されていない限り、レンダリング前にバインドしたものをオーバーライドする可能性があります。

関連する問題