无法将映像加载到 SDL2 程序
Unable to to load an image to SDL2 program
嘿,我打算用SDL2将图像加载到我的程序中。我正在使用Visual Studio 2015。我将图像放在我的项目文件夹中的正确位置,但图像仍然没有 loaded.my 代码,如下所示
#include <iostream>
#include <SDL_image.h>
#include <SDL.h>
using namespace std;
int main(int argc, char* argv[]) {
SDL_Init(SDL_INIT_VIDEO);
SDL_Window* window = NULL;
window = SDL_CreateWindow("Game", 100, 100, 700, 400, SDL_WINDOW_SHOWN);
if (window = NULL) {
cout << "Window creation error" << endl;
}
SDL_Renderer* renderer = NULL;
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
SDL_Texture* man = IMG_LoadTexture(renderer, "img.png");
SDL_Event* ev = new SDL_Event();
if (man == NULL) {
cout << "image cannot load" << endl;
}
SDL_Rect boy_rect;
boy_rect.x = 10;
boy_rect.y = 10;
boy_rect.h = 220;
boy_rect.w = 300;
while (ev->type != SDL_QUIT) {
SDL_PollEvent(ev);
SDL_RenderClear(renderer);
SDL_RenderCopy(renderer, man, NULL, &boy_rect);
SDL_RenderPresent(renderer);
}
SDL_DestroyTexture(man);
SDL_DestroyWindow(window);
SDL_DestroyRenderer(renderer);
return 0;
}
结果是"图像无法加载" 如果您能找到,我找不到任何错误,请通知我。 谢谢
您引用的错误表明man
为空,这意味着IMG_LoadTexture
返回空。这可能是因为renderer
是空的,你应该检查一下,或者很可能只是因为你的"img.png"无法被SDL_IMG
库找到。
应首先添加检查以确保呈现器不为 null,然后检查程序设置为从中运行的工作目录(假设它从 IDE 运行(。"img.png"文件需要位于该目录中。通常最简单的方法是将工作目录更改为编译的二进制文件所在的同一目录,以便程序和数据都位于同一位置。
您可以调用IMG_GetError
(或SDL_GetError
(来获取描述错误的字符串 - 如果 SDL 程序中的某些内容开始运行,这应该是您的第一个呼叫端口。
编辑:可能出错的另一件事是SDL链接库与您的二进制文件不在同一文件夹中(尽管这更有可能崩溃(。你需要例如。SDL2.a
、SDL2_image.a
,可能来自您使用 SDL 标头下载的存档的lib
或bin
目录。如果得到上述过程调用的结果,您将能够判断这是否是问题所在。
在一些像我这样的 IDE 和操作系统上,您应该使用完整(绝对(路径,如下所示:
"C://Users/Filomena/Documents/Images/Sprite.png">
C++ IMG_LoadTexture(( 返回空
值经过两个小时的调试,事实证明渲染器为空。 在我的代码中,我请求了窗口的表面,并将其传递给渲染器,这在以前很好,但现在在 2.28.1 版本中似乎无法初始化渲染器。 因此,在删除对SDL_GetWindowSurface的调用后,一切都奏效了。不需要该调用,因为我们现在正在使用渲染器。 带走:在所有地方都使用 SDL_GetError((。
- 如何创建事件驱动的 SDL2 应用程序
- 如何在使用 SDL2 的 Eclipse 中构建 c++ 程序
- 我的 SDL2 程序需要哪些二进制文件,以便它在另一台未安装 SDL2 的计算机中工作
- SDL2 程序只写入部分字符串
- 在另一台 PC 上执行程序时加载 SDL2 共享库时出错
- 是什么原因导致我的SDL2程序中出现杂散像素
- 如何从Linux编译到SDL2应用程序到Windows?
- 无法将映像加载到 SDL2 程序
- 使用SDL2 C 时,该应用程序无法正确启动(0xc000007b)错误
- 我的 SDL2 应用程序仅在第一次键盘输入后出现严重延迟
- 使用Mac上的GCC编译器编译C SDL2程序
- 在Visual Studio 2017上编译适用于Android的SDL2应用程序时缺少 libBox2D.so
- SDL2硬件加速渲染器在Xubuntu上使用专有驱动程序时会崩溃Linux
- 解释 C++/SDL2 程序的 valgrind 输出
- 创建一个可部署的CMake动态SDL2应用程序
- SDL2程序SIGSEGV启动
- SDL2程序运行时,如何打印到控制台
- SDL2程序使用事件崩溃
- 让linux SDL2程序在没有安装SDL2的计算机上运行
- SDL2程序只工作,如果Renderer是用SDL_RENDERER_SOFTWARE创建的