我正在尝试使用SDL 2.0.1,SDL Image 2.0.0和c ++显示png或jpg文件,但它不起作用。 (我是SDL的新手)我写了一个程序,它执行以下操作:
我使用的是visual studio 2012 express / visual studio 2013专业版。由于我在Windows OS上开发的事实我可以看到图像(通过将应用程序悬停在任务栏中)被加载到缓冲区(或者什么),但它没有显示在实际应用程序中。其余部分可以渲染,但图像除外。所有函数都返回正确的值。清理和重建也不起作用。
该项目链接以下库:
包含文件夹是x86文件夹。 x86文件夹中的DLL文件放在我的项目文件夹中。
实际上代码不多,所以我插入了项目文件的链接,以便可以下载,我会非常感谢任何帮助。我有点绝望,因为我现在试图处理这个bug几天了。
我也试过在2台不同的电脑上编码。两者都有同样的问题。
下载项目:here
(由于随机像素问题,您可能必须重新启动应用程序)
有没有人可以告诉我我做错了什么?
答案 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的新手,所以我无法告诉你为什么它是错误的并且这个序列有效。也许正在读这篇文章的人可以告诉你。