在 OpenGL/GLSL 中,是否可以从立方体贴图进行 texelFetch?类似于以下内容:
color = texelFetch(cubemapsampler,texCoordi, side);
显然,texelFetch 没有重载,所以它看起来是不可能的。
但是,您可以操纵用于查找的方向向量以获得相同的结果[*]:
vec3 generate_cubemap_coord(in vec2 txc, in int face)
{
vec3 v;
switch(face)
{
case 0: v = vec3( 1.0, -txc.x, txc.y); break; // +X
case 1: v = vec3(-1.0, txc.x, txc.y); break; // -X
case 2: v = vec3( txc.x, 1.0, txc.y); break; // +Y
case 3: v = vec3(-txc.x, -1.0, txc.y); break; // -Y
case 4: v = vec3(txc.x, -txc.y, 1.0); break; // +Z
case 5: v = vec3(txc.x, txc.y, -1.0); break; // -Z
}
return normalize(v);
}
color = texture(cubemapsampler, generate_cubemap_coord(texCoordf, side));
[*]提供的代码是为了代表这个概念,它可能会包含错误。