textureLod()返回0,而texelFetch()返回1

时间:2018-07-27 06:34:13

标签: opengl glsl textures

我在glsl中有一个着色器,它使用3D纹理创建一些着色效果。

我目前正在使用texelFetch(),但现在需要使用插值LOD级别来达到最终效果。

纹理声明如下:

uniform layout(binding=0) sampler3D diffuse_map;

然后我使用texelfetch()这样采样:

vec4 val = texelFetch(normal_map, ivec3(((r)*0.5/cube_dim+vec3(0.5))*(voxel_resolution-1)),0);

上面的作品。

然后我尝试使用textureLod采样相同的纹理,如下所示:

vec4 val = textureLod(normal_map, ivec3(((r)*0.5/cube_dim+vec3(0.5))*(voxel_resolution-1)),0);

我猜想这失败了,因为textureLod的坐标系不同,但是此函数的坐标范围是多少?

documentation没有明确声明它,因此坐标系是纹理的坐标系,soemtimes为0到1,soemtimes为-1到1

0 个答案:

没有答案