Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 基于OpenGL的土壤图像显示_Image_Opengl_Textures_Soil - Fatal编程技术网

Image 基于OpenGL的土壤图像显示

Image 基于OpenGL的土壤图像显示,image,opengl,textures,soil,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

我有一个下面的代码,应该显示一个图像,但图像从来没有出现

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

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

SOIL\u load\u OGL\u texture
如果加载成功,则返回正确的OpenGL纹理标识符;如果加载失败,则返回
0
。你应该经常检查一下

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

root/
--- data/
-------- music/
-------- images/
------------ texture.tga
--- bin/
-------- debug/
------------ program.exe
在这种情况下,相对路径将是
“../../data/images/texture.tga”
。注意我们是如何上升两次的(通过
,到达
根/
,然后进入
数据/图像/


这样,如果保持文件夹结构,则无论
root/
在磁盘上的位置。

是否检查
tex\u 2d
是否实际为0(即,如果图像加载失败)?另外,
glColor
调用将对固定管道中的纹理渲染产生影响,您知道吗?似乎存在问题。当给定完整路径(如
C:\\Images\\Imagename.tga)时,它会显示imgae,当然这并不总是可能的。因此,我想知道应该为图像文件使用哪个相对路径?我使用Code::Blocks 10.05作为我的想法,你是在问我如何为文件构造相对路径吗?是“上一个目录”。因此,如果你的代码在/whater/bin/中,图像在/whater/images/中,那么路径将是。/images/imagename.tga