无法显示SDL图像/ PNG或JPG

时间:2013-12-29 18:30:31

标签: sdl sdl-2 sdl-image

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

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

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

该项目链接以下库:

  • SDL2.lib
  • SDL2main.lib
  • SDL2_image.lib

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

实际上代码不多,所以我插入了项目文件的链接,以便可以下载,我会非常感谢任何帮助。我有点绝望,因为我现在试图处理这个bug几天了。

我也试过在2台不同的电脑上编码。两者都有同样的问题。

下载项目:here

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

有没有人可以告诉我我做错了什么?

1 个答案:

答案 0 :(得分:1)

这就是我调试它所做的。

1)在CBuild :: Init中,它停留在CreateWindow:不知道发生了什么,但CPU是99%!更改SDL_WINDOW_BORDERLESS | SDL_WINDOW_FULLSCREEN到SDL_WINDOW_SHOWN所以我们可以继续。

2)点击随机像素问题。只需注释并重新启动。

3)在SDL_ConvertSurface上创建IMG之前一切正常:由于格式为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的新手,所以我无法告诉你为什么它是错误的并且这个序列有效。也许正在读这篇文章的人可以告诉你。

相关问题