ゲームプログラミングC++(翔泳社)を使ってプログラミングを勉強したくて下記のサイトを参考に環境構築を行いました。https://www.kuroshum.com/entry/2019/07/18/%E3%82%B2%E3%83%BC%E3%83%A0%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0C++%E3%81%AE%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89(SDL)
Visual Studio 2017 community・opengl・SDL2・SDL2_imageのダウンロード(RapidJSON, FMODはまだ使わないので後回し)
→Visual Studioでダウンロードした本のソースコードを開く
→ソリューションのプロパティ設定でダウンロードしたSDL2とSDL2_imageのインクルードファイルパスを入力
→追加のディレクトリファイルでSDL2とSDL2_imageのlibファイルx86のパスを入力
→追加の依存ファイルで、SDL2.lib, SDL2main.lib, SDL2_image.lib, opengl32.libを入力
→サブシステム、ビルド後のイベントをサイトの通り設定
→SDL2・SDL2_imageのlib\x86\の全てのdllファイルをC++ファイルがある場所にコピペ
以上を行いましたが、画像ファイルを読み込む際, SDL_Surface* surf = IMG_Load(fileName.c_str());のsurfがどうしてもnullになってしまいます。
本のソースコードを使用しておりコードが間違っていることは考えにくいため、何かの設定が間違っていると予想しているのですが解決策が分かりません。
申し訳ありませんがアドバイスをいただければ幸いです。よろしくお願いします。
開発環境
Windows10, Visual Studio 2017 Community, C++
試したこと
・サイトではコピペするdllファイルが, SDL2.dll, SDL2_image.dll, libpng16-16.dllのみでしたが、全てのdllファイルをコピペしました。
・本からダウンロードしたコードではSDL2とSDL2_imageのヘッダファイル名が違っていたため、自分がダウンロードしたもののヘッダファイル名に変更しました。
ソースコード(関連部分)
Ship::Ship(Game* game)
:Actor(game)
,mRightSpeed(0.0f)
,mDownSpeed(0.0f)
{
// Create an animated sprite component
AnimSpriteComponent* asc = new AnimSpriteComponent(this);
std::vector<SDL_Texture*> anims = {
game->GetTexture("C:\Users\source\repos\code-master\code-master\Chapter02\Assets\Ship01.png"),
game->GetTexture("C:\Users\source\repos\code-master\code-master\Chapter02\Assets\Ship02.png"),
game->GetTexture("C:\Users\source\repos\code-master\code-master\Chapter02\Assets\Ship03.png"),
game->GetTexture("C:\Users\source\repos\code-master\code-master\Chapter02\Assets\Ship04.png"),
};
asc->SetAnimTextures(anims);
}
SDL_Texture* Game::GetTexture(const std::string& fileName)
{
SDL_Texture* tex = nullptr;
// Is the texture already in the map?
auto iter = mTextures.find(fileName);
if (iter != mTextures.end())
{
tex = iter->second;
}
else
{
// Load from file
SDL_Surface* surf = IMG_Load(fileName.c_str());
if (!surf)
{
SDL_Log("Failed to load texture file %s", fileName.c_str());
return nullptr;
}
回答1件
あなたの回答
tips
プレビュー