gpt4 book ai didi

c++ - SDL_FillRect() : Unsupported surface format or Segmentation fault

转载 作者:行者123 更新时间:2023-11-30 05:25:41 25 4
gpt4 key购买 nike

<分区>

我有一个创建白色窗口的小 SDL2 程序。它工作得很好。但是当我尝试使用函数 SDL_CreateRenderer() 创建一个 SDL_Renderer 时,函数 SDL_FillRect() 突然失败并出现以下错误:SDL_FillRect():不支持的表面格式。有时,函数不返回错误而是产生段错误!!

这是我的初始化函数的代码,这是我程序的第一个函数:

SDL_Surface     *screenSurface  = NULL;
SDL_Window *window = NULL;
SDL_Renderer *renderer = NULL;

bool initialize() {
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_EVENTS) < 0) {
cout << "SDL could not initialize: " << SDL_GetError() << endl;
return false;
}
window = SDL_CreateWindow("SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS);
if (window == NULL) {
cout << "Window error: " << SDL_GetError() << endl;
return false;
}
if ((screenSurface = SDL_GetWindowSurface(window)) == NULL) {
cout << "GetWindowSurface() error: << endl;
return false;
}

/*
** here, I create my SDL_Renderer. The function returns non NULL
** However, if the code is present, SDL_FilRect() fails
** if the code is not preset, SDL_FillRect works.
*/
if ((renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED)) == NULL) {
cout << "Renderer error: " << SDL_GetError() << endl;
return false;
}

/*
** Here, SDL_FillRect sometimes works depending on SDL_CreateRenderer
** getUint32Color() is only a custom function that map an enum with Uint32 values
*/
if (SDL_FillRect(screenSurface, NULL, getUint32Color(WHITE)) < 0) {
cout << "SDL_FillRect error: " << SDL_GetError() << endl;
return false;
}
return true;
}

有什么想法吗?

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