gpt4 book ai didi

c++ - SDL图像不显示

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:30:20 25 4
gpt4 key购买 nike

我目前正在尝试创建一个如下所示的按钮类。

void Button::apply_image(std::string path) {

SDL_Surface* loaded_image = NULL;
loaded_image = IMG_Load(path.c_str());
m_button_image = SDL_DisplayFormat(loaded_image);
SDL_FreeSurface(loaded_image);

}

void Button::show(SDL_Surface* screen) {
SDL_BlitSurface(m_button_image, NULL, screen, &m_box);
}

使用该类时,我执行以下操作:

Button button1(0,0,50,50);
button1.apply_image("images/cards/1.png");

SDL_Surface* screen = NULL;

screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
SDL_WM_SetCaption("House Of Cards", NULL);

button1.show(screen);
SDL_Flip(screen);

我的问题是,当我使用 SDL_DisplayFormat(loaded_image); 时图像没有显示,但是当我去掉那行和 SDL_FreeSurface(loaded_image); 时。然后我将 loaded_image = IMG_load(path.c_str()); 更改为 m_button_image = IMG_Load(path.c_str()); 图像将显示。我是不是做错了什么,因为路径显然是正确的,因为当我不调用 DisplayFormat() 时图像会显示。通过使用gdb,m_button_image为NULL,我不明白为什么会这样,因为gdb也显示loaded_image指向一个SDL_Surface*。

最佳答案

所以我想出了问题所在。我在初始化屏幕之前调用了 SDL_DisplayFormat。因为我的函数顺序错误,SDL_DisplayFormat 没有将图像转换成的表面。

关于c++ - SDL图像不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13142091/

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