void MainGame::drawGame() {
glClearDepth(1.0);
// clear colour and depth buffer
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
windowSurface = SDL_GetWindowSurface(_window);
menuImage = SDL_LoadBMP("\Liam C\Documents\Visual Studio 2015\Projects\graphicsPractice\graphicsPractice\ForehalenIntro_Screen.bmp");
if (menuImage == NULL) {
fatalError("Unable to load bitmap, 'ForhalenIntro_Screen.bmp'!");
}
//swap buffer/window displayed and draw to screen
SDL_GL_SwapWindow(_window);
}
// Wont exit unless _gameState is equal to EXIT
void MainGame::gameLoop() {
while (_gameState != GameState::EXIT) {
procInput();
drawGame();
}
}
我正在尝试在我的窗口上显示位图图像。我为我的窗口创建了一个SDL_Surface,并为我的图像初始化为NULL的SDL_Surface。我的错误,"无法加载位图,' ForhalenIntro_Screen.bmp'!"正在返回,所以我知道代码在menuImage被赋予位图函数的行中失败,其中图像的路径作为参数。我已经仔细检查了文件名,位置和路径。我尝试过只使用文件名作为路径。该文件与我的vcrxproj文件和main.cpp文件位于同一文件夹中。我哪里出错了?我没有得到任何语法错误,我显然包括必要的头文件。 编辑: 我现在也尝试过SDL_image,但它仍然没有用。
答案 0 :(得分:0)
这里的问题无意中逃避(很可能是错误的路径)。
menuImage = SDL_LoadBMP("\Liam C\Documents\Visual Studio 2015\Projects\graphicsPractice\graphicsPractice\ForehalenIntro_Screen.bmp");
假设这是在Visual Studio为您创建的默认目录中,正确的路径为:" C:\ Users \ Liam C \ Documents \ Visual Studio 2015 \ Projects \ graphicsPractice \ graphicsPractice \ ForehalenIntro_Screen.bmp&# 34;
在大多数编程语言中,\
用于创建通常无法输入的特殊字符,例如空字符('\0'
)或Unicode字符(u16'\u263A'
或u32'\U0001F60A'
)。因此,您在字符串中使用\
字符是(意外)尝试从'\L'
,'\D'
,'\V'
,'\P'
,{{来创建特殊字符1}},'\g'
和'\g'
。
您可以将反斜杠加倍('\F'
生成'\\'
个字符)或将分隔符更改为正斜杠:
\