OpenGL sampler2D作为子程序方法的参数会导致错误

时间:2012-08-22 07:57:11

标签: opengl glsl

我在GLSL片段着色器中有一个子程序方法,它应该输出基于sampler2D的像素作为输入参数。程序无法使用此设置进行编译。但是只要我只输出一个没有texure2D()计算的颜色,该方法就可以正常工作。 是否有可能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);


}

更新: 好的,谢谢你的翻译。我修复了shader编译日志。现在我收到了这个程序错误:

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

0 个答案:

没有答案