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

时间:2016-10-17 21:13:54

标签: c++ opengl

我试图在屏幕上显示的方块上添加纹理,但在完成所有代码后,方块仍为白色,我无法弄清楚是什么错误,我想在加载纹理后我可能会遗漏一些东西。

这是我用来创建纹理的代码:

m

在着色器编译

之前,我在顶点和索引缓冲区数据之后调用此函数

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

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);
}

有人可以帮助我吗

1 个答案:

答案 0 :(得分:0)

你的着色器看起来很好。你也在制作GLuint id。嗯,你是否将它发送到你的画中画中的着色器?

看起来应该是这样的:

glBindTexture(GL_TEXTURE_2D, textureID); //texture uniform

并在最终抽奖前填写vbos时调用。