c++ - 无法在 macOS 上的 SDL 游戏中加载图像

标签 c++ xcode sdl sdl-image

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

main.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);
}

最佳答案

感谢 Botje 的评论和 this answer 的帮助我解决了这个问题。我必须设置工作目录以指向我的源文件夹。

如果您遇到同样的问题,只需转至Product > Scheme > Edit Scheme...> Options,选中Use custom working directory,单击小文件夹图标并添加您的源目录。

关于c++ - 无法在 macOS 上的 SDL 游戏中加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50564744/

相关文章:

c++ - 我应该使用它还是 static_cast<void*> 然后 static_cast<myType*> 来避免重新解释?

c++ - 如何制作适用于模板类的非模板全局函数?

C 定义和 char 指针声明之间的错误

c++ - SDL - 动态阿尔法?

c++ - 如何以高效快捷的方式为数字添加前缀和删除?

xcode - Clang Pragma 综合列表

ios - Xcode 12 : build Error on FIRAnalyticsConnector

ios - 无法为模拟器构建应用程序。在 iPhone 11 Pro Max 上启动应用程序时出错

c - SDL+OpenGL 在 linux 下工作但在 windows 下不工作,不是编译器/链接器问题

c++ - OpenGL "black screen"挫折