Для объекта куба здесь id текстуры равен 1.0f для всех вершин.
И текстура привязана к GL_TEXTURE1.
Поле отображается следующим образом:

Чтобы проверить, передал ли я правильный идентификатор текстуры, включите этот код в шейдер ниже, который дал следующий результат
//Checking texture id with index
//texColor = vec4(float(index),float(index),float(index),float(index));

Чтобы проверить значение с плавающей запятой для идентификатора текстуры, который я передавал, включил код ниже и увидел следующее
//Checking texture id with float index
//texColor = vec4(v_TexIndex,v_TexIndex,v_TexIndex,v_TexIndex);

Кажется, что преобразование с плавающей точкой в int здесь не работает.
highp int index = int(v_TexIndex);
Так что, чтобы исправить это, я сделал ниже и получил правильный результат.
highp int index = int(v_TexIndex+0.1);

Похоже, что для некоторых вершин v_TexIndex равен 0,99, и добавление 0,1 помогает округлить его до 1, когда происходит преобразование int.
Итак, мне было интересно, почему значение v_TexIndex не подходит, когда речь идет о фрагментном шейдере?
#shader vertex
#version 440 core
layout(location = 0) in vec4 position;
layout(location = 1) in vec4 color;
layout(location = 2) in vec2 texCoords;
layout(location = 3) in float texIndex;
out vec2 v_TexCoord;
out vec4 v_Color;
out float v_TexIndex;
uniform mat4 u_MVP;
void main()
{
gl_Position = u_MVP*position;
v_TexCoord = texCoords;
v_Color = color;
v_TexIndex = texIndex;
}
#shader fragment
#version 440 core
layout(location = 0) out vec4 color;
in vec2 v_TexCoord;
in vec4 v_Color;
in float v_TexIndex;
uniform sampler2D u_Textures[32];
uniform float u_SelectColorf;
void main()
{
highp int index = int(v_TexIndex);
vec4 SelectColorVec = vec4(u_SelectColorf,u_SelectColorf,u_SelectColorf,u_SelectColorf);
vec4 OneMinusSelectColorVec = vec4(1.0f-u_SelectColorf,1.0f-u_SelectColorf,1.0f-u_SelectColorf,1.0f-u_SelectColorf);
vec4 texColor = OneMinusSelectColorVec * texture(u_Textures[index],v_TexCoord);
texColor += SelectColorVec * v_Color;
//Checking texture id with index
//texColor = vec4(float(index),float(index),float(index),float(index));
//Checking texture id with float index
//texColor = vec4(v_TexIndex,v_TexIndex,v_TexIndex,v_TexIndex);
color = texColor;
}