代码之家  ›  专栏  ›  技术社区  ›  Nikola Stojaković

无法在MacOS上的SDL游戏中加载图像

  •  1
  • Nikola Stojaković  · 技术社区  · 6 年前

    我正在观看在SDL游戏中添加图像的教程,但作者使用的是Visual Studio。我在Xcode上,不知道在哪里添加资产文件夹。我尝试右键单击应用程序根目录> Add files to "Project" >目的地 assets 文件夹,但图像未显示在窗口中。

    主.cpp

    #include "Game.hpp"
    
    Game *game = nullptr;
    
    int main() {
    
        game = new Game();
    
        game->init("Game", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, false);
    
        while (game->running()) {
            game->handleEvents();
            game->update();
            game->render();
        }
    
        game->clean();
    
        return 0;
    }
    

    这是在函数末尾添加图像的初始化方法:

    游戏.cpp

    void Game::init(const char *title, int xpos, int ypos, int width, int height, bool fullscreen)
    {
        int flags = 0;
        if (fullscreen) {
            flags = SDL_WINDOW_FULLSCREEN;
        }
    
        if (SDL_Init(SDL_INIT_EVERYTHING) == 0) {
            std::cout << "Subsystems initalized." << std::endl;
    
            window = SDL_CreateWindow(title, xpos, ypos, width, height, fullscreen);
    
            if (window)
            {
                std::cout << "Window created!" << std::endl;
            }
    
            renderer = SDL_CreateRenderer(window, -1, 0);
    
            if (renderer)
            {
                SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
                std::cout << "Renderer created!" << std::endl;
            }
    
            isRunning = true;
        } else {
            isRunning = false;
        }
    
        SDL_Surface *tempSurface = IMG_Load("assets/player.png");
        playerTexture = SDL_CreateTextureFromSurface(renderer, tempSurface);
        SDL_FreeSurface(tempSurface);
    }
    

    这就是渲染方法:

    游戏.cpp

    void Game::render()
    {
        SDL_RenderClear(renderer);
        SDL_RenderCopy(renderer, playerTexture, NULL, NULL);
        SDL_RenderPresent(renderer);
    }
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Nikola Stojaković    6 年前

    多亏了博捷的评论和 this answer 我解决了这个问题。我必须设置工作目录以指向我的源文件夹。

    如果你有同样的问题,去 Product > Scheme > Edit Scheme... > Options ,检查 Use custom working directory ,单击小文件夹图标并添加源目录。