如何通过 GLSL Sampler 仅绘制存储在纹理数组中的纹理2D 图集的一部分?
例如,我有纹理图集,我会将它们放在一起(与相同大小的其他图集)
在Texture2D数组里面。 (glTexSubImage3D)
那么,在这种情况下我的采样器应该是什么样子?
https://www.opengl.org/wiki/Array_Texture https://www.opengl.org/wiki/Array_Texture
https://www.opengl.org/wiki/Sampler_(GLSL) https://www.opengl.org/wiki/Sampler_(GLSL)
我只找到了示例,如何从数组中选择和应用整个纹理,但在我们的数组中没有任何相关的内容
我们存储纹理图集。
幸运的是,这是我最近工作的领域,要在片段着色器中使用 2d 纹理数组,您可以执行如下操作:
#version 330
uniform sampler2DArray tex;
flat in uint fragLayer;
in vec2 fragTexCoord;
out vec4 colour;
void main()
{
colour = texture( tex, vec3( fragTexCoord, fragLayer ) );
}
因此,纹理层是 3d 向量的第三个元素,用于访问纹理数组中的各个像素。
另请注意,使用天真的(也是最简单的)glTexSubImage3d
仅当所有图块都位于垂直线而不是网格中时,直接在原始图像上才有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)