Я следовал учебному руководству по загрузке модели здесь и у меня возникают проблемы с отображением модели правильно, в частности с корректным применением текстуры.
Я отправляю диффузные текстуры в шейдер в массивеиспользуя следующий код
unsigned int diffuseNr = 0;
unsigned int specularNr = 0;
for (unsigned int i = 0; i < textures.size(); i++)
{
glActiveTexture(GL_TEXTURE0 + i); // activate proper texture unit before binding
// retrieve texture number (the N in diffuse_textureN)
string number;
string name = textures[i].type;
if (name == "texture_diffuse")
number = std::to_string(diffuseNr++);
else if (name == "texture_specular")
number = std::to_string(specularNr++);
shader->setInt(name + "[" + number + "]", i);
glBindTexture(GL_TEXTURE_2D, textures[i].id);
}
shader->setInt("material.diffuseCount", diffuseNr);
shader->setInt("material.specularCount", specularNr);
glActiveTexture(GL_TEXTURE0);
, и в своем шейдере я использую только первую диффузную текстуру (для тестирования), подобную этой.
#version 330 core
out vec4 FragColor;
in vec3 vert_normal;
in vec2 vert_texCoords;
struct Material {
int diffuseCount;
int specularCount;
};
uniform sampler2D texture_diffuse[2];
uniform Material material;
void main()
{
FragColor = texture(texture_diffuse[0],vert_texCoords)*5.0;
}
Я получаю некоторые цвета на мою модель,так что я вижу, что текстуры отправляются и читаются шейдером правильно.Но результаты не такие, какими они должны быть
мой результат
ожидаемый результат с использованием шейдера, который выводит только диффузную текстуру каксогласно учебному пособию
.
любая помощь приветствуется.