无法让SDL_LoadBMP显示图像(C ++)?

时间:2017-04-21 23:41:20

标签: c++ file bitmap sdl sdl-2

    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,但它仍然没有用。

1 个答案:

答案 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'生成'\\'个字符)或将分隔符更改为正斜杠:

\