gpt4 book ai didi

c - 如何将任何 SDL_Surface 转换为 RGBA8888 格式并返回?

转载 作者:太空宇宙 更新时间:2023-11-04 01:08:10 25 4
gpt4 key购买 nike

我想将我的函数接收到的任何 SDL_Surface 转换为 RGBA8888 格式表面,stuff,然后在返回前将其转换回其原始格式。

顺便说一句,我在用 C 语言工作。

//------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
//------------------------------------------------
SDL_Surface* formattedSurf = SDL_ConvertSurfaceFormat(surf,
SDL_PIXELFORMAT_RGBA8888,
0);

产量:Eclipse CDT 的“问题描述:无法解析符号‘SDL_PIXELFORMAT_RGBA8888’”和 gcc 的类似响应。

[Thu 13/09/26 14:40 PDT][pts/3][x86_64/linux-gnu/3.11.1-1-ARCH][5.0.2]
<justin@justin-14z:/tmp>
zsh/2 1821 % pkg-config --cflags --libs sdl
-D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/SDL -lSDL -lpthread

最佳答案

假设您拥有的表面称为 surface 并且有效,即不为 ​​NULL

// Store the current pixel format flag
Uint32 currFormat = surface->format->format;

// Convert the surface to a new one with RGBA8888 format
SDL_Surface* formattedSurf = SDL_ConvertSurfaceFormat(surf,
SDL_PIXELFORMAT_RGBA8888,
0);

if (formattedSurf != NULL) {

// Free original surface
SDL_FreeSurface(surface);

////////////////////////
// DO YOUR STUFF HERE //
////////////////////////

// Re-create original surface with original format
surface = SDL_ConvertSurfaceFormat(formattedSurf, currFormat, NULL);

// Free the formatted surface
SDL_FreeSurface(formattedSurf);

}
else {

/////////////////////////////////////
// LOG A WARNING OR SOMETHING HERE //
/////////////////////////////////////

}

关于c - 如何将任何 SDL_Surface 转换为 RGBA8888 格式并返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18994246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com