我使用SDL2庫,在C.段錯誤的SDL_FillRect
我做了一個測試程序,打開一個白色窗口,但我得到的功能SDL_FillRect分段錯誤,即使沒有任何錯誤或警告當我建立它。
下面的代碼:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <SDL2/SDL_ttf.h>
static const int window_width = 1000;
static const int window_height = 1000;
int main(int argc, char* argv[])
{
//Window
SDL_Window *window = NULL;
//Window Surface where things will be shown
SDL_Surface *surface = NULL;
//Inicializar SDL
if(SDL_Init(SDL_INIT_VIDEO) == -1)
{
printf("Failed to initialize SDL2. SDL Error: %s", SDL_GetError());
}
else
{
window = SDL_CreateWindow("Test", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, window_width, window_height, SDL_WINDOW_SHOWN);
if(window == NULL)
printf("Failed to create SDL2 window. SDL Error: %s", SDL_GetError());
else
{
//Fill window with white color
SDL_FillRect(surface, NULL, SDL_MapRGB(surface->format, 0xFF, 0xFF, 0xFF));
//Update surface with new changes
SDL_UpdateWindowSurface(window);
//Wait before closing (parameter in miliseconds)
SDL_Delay(4000);
}
}
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
您正在傳遞**表面**(它被設置爲** NULL **)作爲第一個參數到SDL_FillRect,可能是問題https://wiki.libsdl.org/SDL_FillRect – smcd
嗯,好的。那麼我應該怎麼傳遞它呢? –
按照鏈接中的示例代碼所示創建曲面。 ** SDL_Surface * surface = SDL_CreateRGBSurface(0,window_width,window_height,32,0,0,0,0); ** – smcd