使用OpenGL使用SOIL显示图像

时间:2013-02-21 09:15:13

标签: image opengl textures soil

我有一个以下代码,它应该显示图像,但图像永远不会出现。

GLuint tex_2d = SOIL_load_OGL_texture (
    "ImageName.tga",
    SOIL_LOAD_AUTO,
    SOIL_CREATE_NEW_ID,
    SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT
);
glColor3f(0.0f,1.0f,.50f);
glBindTexture(GL_TEXTURE_2D, tex_2d);
glEnable(GL_TEXTURE_2D);
glBegin(GL_QUADS);
    glTexCoord2d(0,0);        glVertex3f(factor*BOARD_BREADTH/2,-factor*BOARD_LENGTH/2,0);
    glTexCoord2d(0,1);        glVertex3f(factor*BOARD_BREADTH/2,factor*BOARD_LENGTH/2,0);
    glTexCoord2d(1,1);        glVertex3f(-factor*BOARD_BREADTH/2,factor*BOARD_LENGTH/2,0);
    glTexCoord2d(1,0);        glVertex3f(-factor*BOARD_BREADTH/2,-factor*BOARD_LENGTH/2,0);


glEnd();

但我只得到一个绿色矩形作为输出。没有编译错误。

1 个答案:

答案 0 :(得分:2)

如果加载成功,

SOIL_load_OGL_texture将返回正确的OpenGL纹理标识符,如果失败则返回0。你应该经常检查一下!

在您的情况下,如果错误的路径导致问题,请使用相对路径。这是示例文件夹结构:

root/
--- data/
-------- music/
-------- images/
------------ texture.tga
--- bin/
-------- debug/
------------ program.exe

在这种情况下,相对路径为"../../data/images/texture.tga"。请注意我们如何上升两次(..},以前往root/,然后进入data/images/

这样,如果保留文件夹结构,root/驻留在磁盘上的位置无关紧要。