我正在CodeBlocks上運行Glut項目,我有一個類「imageloader」,我正在使用紋理與位圖圖像的球體。它工作的很好,當我指定像這樣的圖像的位置loadTexture(loadBMP("C:\\Users\\Ndumiso\\Desktop\\Project1\\images\\earth.bmp"));
我創建了一個名爲「圖像」的文件夾並將圖像複製到該文件夾中。 Here's how it looks when you run itC++ OpenGL紋理,找不到圖像
你要知道,我也有相同的地方內的同一圖像的.exe可執行文件(即BIN \調試\ earth.bmp)
但我失敗時,我不喜歡這樣loadTexture(loadBMP("earth.bmp"));
它無法找到圖像。
我不能使用上面的方法,長時間的絕對路徑,導致每次項目進入不同的計算機時,在運行項目之前必須每次更改路徑,否則會給您一個錯誤。所以我不能像這樣提交我的項目。
這裏只是一個在我main.cpp中的代碼片段(讓我知道如果你需要更多的代碼):
//Makes the image into a texture, and returns the id of the texture
GLuint loadTexture(Image* image) {
GLuint textureId;
glGenTextures(1, &textureId); //Make room for our texture
glBindTexture(GL_TEXTURE_2D, textureId); //Tell OpenGL which texture to edit
//Map the image to the texture
glTexImage2D(GL_TEXTURE_2D, //Always GL_TEXTURE_2D
0, //0 for now
GL_RGB, //Format OpenGL uses for image
image->width, image->height, //Width and height
0, //The border of the image
GL_RGB, //GL_RGB, because pixels are stored in RGB format
GL_UNSIGNED_BYTE, //GL_UNSIGNED_BYTE, because pixels are stored
//as unsigned numbers
image->pixels); //The actual pixel data
return textureId; //Returns the id of the texture
}
GLuint _textureId2;
void initRendering() {
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_NORMALIZE);
glEnable(GL_COLOR_MATERIAL);
quad = gluNewQuadric();
_textureId2 = loadTexture(loadBMP("C:\\Users\\Ndumiso\\Desktop\\TestClasses\\images\\earth.bmp"));
}
當運行在IDE的程序,特別是與調試器連接,當前工作目錄可能是由IDE來改變。請參閱IDE的文檔以瞭解如何更改工作目錄。如果使用Visual Studio,則可以在調試器設置中的項目屬性中完成。它是$(ProjectDir)默認情況下(與.vcxproj文件的文件夾)。 – Drop