2

入力引数として sampler2D に基づいてピクセルを出力する必要がある GLSL フラグメント シェーダーのサブルーチン メソッドがあります。プログラムはこのセットアップでコンパイルに失敗します。sampler2D をパラメーターとして渡すことができない可能性はありますか? OpenGL 4.2、GLSL 420 を使用しています。

コードは次のとおりです。

#version 420
subroutine vec4 RenderPass(sampler2D tex,vec2 uvsIn);
subroutine uniform RenderPass renderTechnique;
layout(binding=0)  uniform sampler2D colorMap;
smooth in vec2 uvsOut;

 ........ there rest of stuff

subroutine( RenderPass )
vec4 copyPass(sampler2D tex,vec2 uvsIn){


  return texture2D(tex,uvsIn);
  ////this however works ok : return vec4(1,0,0,1);

}

void main()
{

    outputColor = renderTechnique(colorMap,uvsOut);


}

更新: OK、ヘッドアップに感謝します。シェーダー コンパイル ログを修正しました。現在、次のプログラム エラーが発生しています。

: error C5208: Sampler needs to be a uniform (global or parameter to main), need to inline function or resolve conditional expression
4

0 に答える 0