我一直在关注模型加载教程here,但在正确显示模型(尤其是正确应用纹理)方面遇到问题。
我正在使用以下代码将漫反射纹理发送到数组中的着色器
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;
}
我正在为模型添加一些颜色,因此可以看到纹理已正确发送到着色器并由其读取。但是结果并非应有的
我的结果
使用着色器的预期结果,该着色器仅根据教程输出
感谢您的帮助。