使用SOIL加载OpenGl纹理时,纹理不会出现

texture doesnt appear when loading OpenGl texture using SOIL

本文关键字:纹理 SOIL 加载 OpenGl 使用      更新时间:2023-10-16

我试图添加一个纹理到我的正方形显示在屏幕上,但在我做了所有的代码后,正方形仍然是白色的,我不能找出什么是错的,我想我可能错过了一些东西后,我已经加载了纹理。

这是我用来创建纹理的代码:
void textureManager::createTexture(const char* fileName) {
    GLuint textureID = SOIL_load_OGL_texture(fileName, SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_INVERT_Y);
    if (0 == textureID) {
        cout << "error" << endl;
    }
    glActiveTexture(GL_TEXTURE0);
    glBindTexture(GL_TEXTURE_2D, textureID);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
}

我在顶点和索引缓冲区数据之后调用这个函数,在着色器编译之前

这是我的顶点和片段着色器代码:

#version 430
in layout(location = 0) vec2 position;
in layout(location = 1) vec2 texCoord;
out vec2 vertex_texCoord;
void main()
{
     gl_Position = vec4(position, 0.0, 1.0);
     vertex_texCoord = texCoord;
}

#version 430
out vec4 fragmentColor;
in vec2 vertex_texCoord;
uniform sampler2d textureSampler;
void main()
{
    fragmentColor = texture(textureSampler, vertex_texCoord);
}

有人能帮帮我吗

你的着色器看起来很好。你也在制作GLuint id。嗯,你是在drawcall中把它发送给着色器吗?

应该是这样的:

glBindTexture(GL_TEXTURE_2D, textureID); //texture uniform