2
Emscritenを使用してOpenGLフレームワークをJavaScriptに移植します。WebGL:頂点シェーダーとフラグメントシェーダーで同じ制服をバインドすることは禁じられていますか?
状態は、均一な構造体に格納されます。私は、頂点及びフラグメントシェーダの両方にアクセスしたい
struct UniformState {
...
mat4 modelviewprojection_matrix;
mat4 modelview_matrix;
mat3 normal_matrix;
mat4 texture_matrix;
...
};
:
uniform UniformState GLUP;
私はそれを行う際に、Iリンク時にエラーが発生する:
Uniform `GLUP`is not linkable between attached shaders
頂点シェーダーとフラグメントシェーダーで同じユニフォームをバインドすることは禁じられていますか?
(これが禁止されていれば、シェーダごとに異なる2組の一様変数を宣言することができますが、コードがクリーナー/シンプルになるので、1つしか持たないことを望みます。その場合には が可能にするために特別なものです)。
が、私はこれをやったので、久しぶり取得精度を設定しない場合はレトが述べたように。私はあなたが頂点シェーダからフラグメントシェーダにユニフォームを渡すことができると思う – user3125280
その設定を統一し、位置を取り出してdrawcallに送るコードを表示してください。それを間違った方法で送ることが問題になるかもしれないと思う。どのようにしても、他のすべてが失敗した場合、頂点シェーダから一様な値を出力してフラグメントシェーダ(varを変更)に入力できます。 –
このエラーはシェーダリンク時に発生するため、均一な位置を取得してユニフォームを指定する方法(これは後で行います)によって発生することはありません。 – BrunoLevy