我有一个关于片段着色器的问题。 我想获取一张纹理的大小(这张纹理是从图片中加载的)。
我知道可以使用textureSize(sampler)来获取包含纹理大小的ivec2。但是我不知道为什么这个方法不起作用(无法编译):
#version 120
uniform sampler2D tex;
float textureSize;
float texelSize;
void main()
{
textureSize = textureSize(tex).x;//first line
//textureSize = 512.0;//if i set the above line as comment and use this one the shader compiles.
texelSize = 1.0 / textureSize;
vec4 color = texture2D(tex,gl_TexCoord[0].st);
gl_FragColor = color * gl_Color;
}
ShaderInfoLog
或类似的名称,如果您拥有一个相当现代的(4.x)系统,则应该具有某个版本的debug_output
扩展(应优先使用,因为它更易于使用、可配置并提供更好的信息)。 - Bartek Banachewiczsampler2D
的大小。 - Bartek Banachewicz