Не удается загрузить изображение в SDL-игре на macOS - PullRequest
0 голосов
/ 28 мая 2018

Я смотрю учебник по добавлению изображения в игру SDL, но автор использует Visual Studio.Я нахожусь на XCode, и я не уверен, куда добавить папку ресурсов.Я попытался щелкнуть правой кнопкой мыши корневой каталог приложения> 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;
}

Это метод инициализации, в котором я добавляю изображение в конец функции:

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

И это метод рендеринга:

Game.cpp

void Game::render()
{
    SDL_RenderClear(renderer);
    SDL_RenderCopy(renderer, playerTexture, NULL, NULL);
    SDL_RenderPresent(renderer);
}

1 Ответ

0 голосов
/ 28 мая 2018

Благодаря помощи комментария Ботье и этого ответа Я решил проблему.Мне пришлось настроить рабочий каталог так, чтобы он указывал на мою исходную папку.

Если у вас возникла та же проблема, просто перейдите на Product > Scheme > Edit Scheme... > Options, отметьте Use custom working directory, нажмите на небольшой значок папки и добавьте исходный каталог.

...