1

所以我一直在用 Xcode 中的 SDL 2 尝试一些超级基本的东西。我不太清楚如何正确获取图像文件路径。我已经对该主题进行了一些搜索,这导致了告诉构建阶段要复制哪些文件的建议。但这对我没有帮助。这是我目前在文件结构和设置方面的内容:

在此处输入图像描述

在此处输入图像描述

但是,当我尝试像这样抓取文件时:

//
//  Image.h
//  SDLTest
//
//  Created by Aaron McLeod on 2013-10-17.
//  Copyright (c) 2013 Aaron McLeod. All rights reserved.
//

#ifndef SDLTest_Image_h
#define SDLTest_Image_h

#include <SDL2/SDL.h>
#include <iostream>

class Image {
public:
    static SDL_Texture* load_image(const char * filename, SDL_Renderer* renderer) {
        SDL_Surface* loaded_image = nullptr;
        SDL_Texture* texture = nullptr;

        loaded_image = SDL_LoadBMP(filename);
        if(loaded_image != nullptr) {
            texture = SDL_CreateTextureFromSurface(renderer, loaded_image);
            SDL_FreeSurface(loaded_image);
            std::cout << "loaded image" << std::endl;
        }
        else {
            std::cout << SDL_GetError() << std::endl;
        }

        return texture;
    }
};

#endif

else 条件被命中,我看到它找不到文件的错误。我传递的字符串是"resources/paddle.png"

4

1 回答 1

1

您正在尝试从 SDL_LoadBMP() 加载 PNG 文件。这是行不通的,因为 SDL_LoadBMP() 只能加载 BMP 文件。

如果要在使用 SDL2 的应用程序中加载 PNG 文件,请使用 SDL2_image 框架。Mac 版本的 SDL2_image 设置为在应用程序包的 Resources 文件夹中查找图像文件。将您的图像文件放在 Copy Bundle Resources 构建阶段,SDL2_image 应该能够加载这些文件。您不需要屏幕截图中显示的复制文件构建阶段。

于 2013-10-21T18:18:02.997 回答