c++ - SDL_DisplayFormatAlpha() 的 SDL 2.0 版本?

标签 c++ image sdl sdl-2 sdl-1.2

<分区>

我开始使用 SDL 2.0 进行编程。我希望能够将 .PNG 文件加载到我的程序中,因为 .bmp 文件不具备 .png 文件所具有的所有简洁功能。

我有来自 http://www.sdltutorials.com/sdl-image 的以下代码:

SDL_Surface* loadSurf(char* File) {
SDL_Surface* Surf_Temp = NULL;
SDL_Surface* Surf_Return = NULL;

if((Surf_Temp = IMG_Load(File)) == NULL) {
    return NULL;
}

Surf_Return = SDL_DisplayFormatAlpha(Surf_Temp);
SDL_FreeSurface(Surf_Temp);

return Surf_Return;
}

该函数的重点是加载图像,您可以通过执行以下操作来调用它:

SDL_Surface* character = loadSurf("sprite.png");

但是,当我运行它时,错误出现在“Surf_Return = SDL_DisplayFormatAlpha(Surf_Temp); "行。错误是:使用未声明的标识符 'SDL_DisplayFormatAlpha'

我认为这是因为代码是为 SDL 1.2 编写的,而我使用的是 SDL 2.0。有没有办法将此功能转换为 SDL 2.0?

我正在运行 Mac OSX 10.13.2,如果适用的话。

最佳答案

我认为他们从 SDL2 中删除了 SDL_DisplayFormatAlpha(和 SDL_DisplayFormat)

如果要添加要使用的 alpha channel SDL_ConvertSurfaceFormat例如,从 IMG_Load 加载表面

// Returns a new surface with an alpha channel added
SDL_Surface *new_s = SDL_ConvertSurfaceFormat(surf, SDL_PIXELFORMAT_RGBA8888, 0);

顺便说一句,该教程看起来很旧,您可能需要查看 SDL_Image 文档。

关于c++ - SDL_DisplayFormatAlpha() 的 SDL 2.0 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49120011/

相关文章:

python - 使用 python 和互相关进行图像配准

sdl - 使用 SDL 2.0 获取 8 位调色板输出时遇到问题

jquery - 将变量从我的点击事件传递给函数

c++ - 使用 SDL 捕获屏幕?

c++ - 将笛卡尔宽度和高度转换为等距

c++ - 新分配的先前数据会发生什么变化?

c++ - vc++ 应用程序按序号调用 vc++ dll

c++ - 如何在函数模板中获得不同类型

c++ - 为什么 C++ 禁止 new T[n](arg...)?

javascript - 图片拖放、上传——只允许上传一张图片?