SOIL未显示图像

SOIL not displaying the images

本文关键字:图像 显示图 显示 SOIL      更新时间:2023-10-16

我在C++中遇到了一个关于SOIL的问题。问题是,当我试图从给定的路径加载am图像时,它只显示白色。

首先,我将其加载到内存中,如下所示:

_t = SOIL_load_OGL_texture(_texture.c_str(),
                        SOIL_LOAD_AUTO,
                        SOIL_CREATE_NEW_ID,
                        SOIL_FLAG_INVERT_Y);

之后我这样使用它:

glBindTexture(GL_TEXTURE_2D, _t);
glPushMatrix();
glBegin(GL_QUADS);
    glTexCoord2f (0, 0); glVertex3f(-1 + (_p.X)/(App::WinSize().X / 2), 1 - (_p.Y)/(App::WinSize().Y / 2), 0.0f);
    glTexCoord2f (1, 0); glVertex3f(-1 + (_p.X + _s.X)/(App::WinSize().X / 2), 1 - (_p.Y)/(App::WinSize().Y / 2), 0.0f);
    glTexCoord2f (1, 1); glVertex3f(-1 + (_p.X + _s.X)/(App::WinSize().X / 2), 1 - (_p.Y + _s.Y)/(App::WinSize().Y / 2), 0.0f);
    glTexCoord2f (0, 1); glVertex3f(-1 + (_p.X)/(App::WinSize().X / 2), 1 - (_p.Y + _s.Y)/(App::WinSize().Y / 2), 0.0f);
glEnd();
glPopMatrix();

我使用Visual Studio 2012。我将带有图像的文件夹放在调试.exe文件时该文件结束的文件夹中。

我不确定它是否相关,但以下是程序执行时运行的OpenGL设置:

glutInit(&argc, &argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA | GLUT_MULTISAMPLE | GLUT_BORDERLESS);
glEnable(GLUT_MULTISAMPLE);
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glClearColor(0.0, 0.0, 0.0, 1.0);
glLoadIdentity();
glOrtho(0.0, size.X, 0.0, size.Y, -1.0, 1.0);
glutInitWindowPosition(position.X, position.Y);
glutInitWindowSize(size.X, size.Y);

您是否在加载过程中检查错误?

添加

/* check for an error during the load process */
if( 0 == _t )
{
    printf( "SOIL loading error: '%s'n", SOIL_last_result() );
}

在使用SOIL_load_OGL_texture加载纹理后立即检查是否已加载纹理而没有任何错误。