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 フレームワークを使用します。SDL2_image の Mac バージョンは、アプリ バンドルの Resources フォルダーで画像ファイルを検索するように設定されています。イメージ ファイルを Copy Bundle Resources ビルド フェーズに配置すると、SDL2_image がファイルをロードできるようになります。スクリーンショットに示されている Copy Files ビルド フェーズは必要ありません。

于 2013-10-21T18:18:02.997 に答える