无法在 macOS 上的 SDL 游戏中加载图像
Can't load image in SDL game on macOS
我正在观看在SDL游戏中添加图像的教程,但作者使用Visual Studio。我在 XCode 上,我不确定在哪里添加资产文件夹。我尝试右键单击应用程序根目录>Add files to "Project"
>assets
文件夹的目标,但窗口中未显示图像。
主.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 的评论和这个答案的帮助,我解决了这个问题。我必须设置工作目录以指向我的源文件夹。
如果您有同样的问题,请转到Product > Scheme > Edit Scheme... > Options
,选中Use custom working directory
,单击小文件夹图标并添加源目录。
相关文章:
- std::原子加载和存储都需要吗
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 为什么加载SDF会导致Mobilizer创建闭环错误
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- 如何使用tinyxml2从XML加载父实体和子实体
- 如何在C++中使用pybind11加载一个pickle python列表
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 无法在 macOS 上的 SDL 游戏中加载图像
- 如何在 SFML C++游戏中将资产加载与主循环分开
- 商业游戏如何处理即时的字体加载
- 将游戏数据加载到没有全局变量的池中
- Linux 不会为我的游戏加载我的图像
- 为什么D3D10SDKLayers.dll在我的DX11游戏中加载
- c++游戏加载对象/全局对象
- SDL游戏在加载第二级时冻结
- C++ Windows 显示游戏中加载菜单的现有目录列表
- 游戏启动到空白的白色屏幕,而不是加载屏幕
- 保存和加载游戏状态到二进制文件中.c++
- 基于组件的游戏引擎中的模板和运行时组件加载