【问题标题】:Loading Picture in Screen using SOIL in C++ does not work在 C++ 中使用 SOIL 加载屏幕中的图片不起作用
【发布时间】:2013-10-29 12:56:48
【问题描述】:

使用 SOIL 库我尝试在我绘制的网格下方加载一个图像; 这是这个函数的代码:

void ModelGL:: LoadTexture()
{
        texture[0] = SOIL_load_OGL_texture("images/GolSa.png",SOIL_LOAD_AUTO,SOIL_CREATE_NEW_ID,SOIL_FLAG_INVERT_Y);

        //if(texture[0] == 0)
        //exit(1);


    // Typical Texture Generation Using Data From The Bitmap
    glBindTexture(GL_TEXTURE_2D, texture[0]);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);

    glBindTexture(GL_TEXTURE_2D, texture[0]);
    glBegin(GL_QUADS);
    //Bottom Face (true)
    glTexCoord2f(1.0f, 1.0f); glVertex3f(1.0f, -1.0f, -1.0f);
    glTexCoord2f(0.0f, 1.0f); glVertex3f( -1.0f, -1.0f, -1.0f);
    glTexCoord2f(0.0f, 0.0f); glVertex3f( -1.0f, -1.0f,  1.0f);
    glTexCoord2f(1.0f, 0.0f); glVertex3f(1.0f, -1.0f,  1.0f);
    glEnd();

    glDisable(GL_TEXTURE_2D);

}

但在输出中我看不到图片;

【问题讨论】:

    标签: c++ visual-studio-2010 opengl 64-bit soil


    【解决方案1】:

    glBindTexture(...) 之前或之后尝试glActiveTexture(GL_TEXTURE0)

    编辑:
    由于您使用的是glTexCoords*(...),因此您必须先使用glEnable(GL_TEXTURE_2D) 启用它们,然后才能使用它们。

    这是一个带纹理的立方体的示例:
    http://www.gamasutra.com/view/feature/131768/understanding_and_using_opengl_.php?print=1
    阅读部分A First Try at Texturing

    【讨论】:

    • 它是未声明的标识符
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多