SDL图像/PNG或JPG无法显示



我正在尝试使用SDL 2.0.1、SDL Image 2.0.0和c++显示png或jpg文件,但它不起作用。(我是SDL的新手)我写了一个程序,它可以做以下事情:

  • 绘图背景(正在工作)
  • 创建随机像素/显示它们(经常工作(随机值仍然有问题))
  • 显示png/jpg文件(它们都不起作用)

我使用的是visualstudio2012express/viewstudio2013professional。由于我是在windows操作系统上开发的,我可以看到图像(通过将应用程序悬停在任务栏中)正在加载到缓冲区中(或者其他什么),但它没有在实际应用程序中显示。除图像外,其余部分都可以渲染。所有函数都返回正确的值。清理和重建也不起作用。

该项目链接了以下库:

  • SDL2.lib
  • SDL2主.lib
  • SDL2_image.lib

include文件夹是x86文件夹。x86文件夹中的DLL文件放在我的项目文件夹中。

实际上代码不多,所以我插入了一个项目文件的链接,这样它就可以下载了,我将非常感谢任何帮助。我有点绝望,因为我正在努力处理这个bug几天了。

我还试着在两台不同的电脑上进行编码。他们两个都有同样的问题。

下载项目:在这里

(由于随机像素问题,您可能不得不重新启动应用程序)

有人能告诉我我做错了什么吗?

这就是我调试它的方法。

1) 在CBuild::Init中,它被困在CreateWindow:不知道发生了什么,但CPU处于99%!将SDL_WINDOW_BORDERLESS|SDL_WINDOW_FULLREEN更改为SDL_WINDO_SOWN,以便我们可以继续。

2) 解决随机像素问题。只需评论并重新启动即可。

3) 一切正常,直到SDL_ConvertSurface的createIMG:由于格式为0而崩溃。向后看,看看这会在哪里受到打击。它位于SDL_CreateRenderer中。这不应该在SDL_GetWindowSurface之前吗?试试看,是的,它有效。所以cbuild_init中的修复程序是.

pWindow = SDL_CreateWindow(
"kartoffel", 
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
displaymode.w,
displaymode.h,
SDL_WINDOW_SHOWN);
// create renderer
pRenderer = SDL_CreateRenderer(pWindow, -1, SDL_RENDERER_ACCELERATED);
pSurfWnd = SDL_GetWindowSurface(pWindow);
SDL_FillRect ...
// ignore random pixels
pIMG_logo->createIMG ...

不幸的是,我也是SDL的新手,所以我真的不能告诉你为什么它是错误的,这个序列是有效的。也许其他读到这篇文章的人可以告诉你。

最新更新