C语言 SDL 创建窗口,在 Mac OS X 上未创建窗口



我正在遵循 SDL 上的 Lazy Foo 教程。

使用SDL_WINDOW_SHOWN创建窗口并运行二进制文件时,菜单栏会显示,但窗口不会。 需要一些关于我可以做些什么来进一步调试的指导。

我也尝试手动设置窗口位置,但没有运气。

SDL_CreateWindow("SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
SDL_CreateWindow("SDL Tutorial", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
SDL_CreateWindow("SDL Tutorial", 100, 100, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);

一切都编译成功,SDL_GetError()不会产生任何错误。我登录到一个文件进行确认。

#include <SDL2/SDL.h>
#include <stdio.h>
//Screen dimension constants
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
int main(int argc, const char * argv[]) {
FILE *log_file;
log_file = fopen("log.log", "a+");

//The window we'll be rendering to
SDL_Window* window = NULL;

//The surface contained by the window
SDL_Surface* screenSurface = NULL;
//Initialize SDL
if (SDL_Init(SDL_INIT_VIDEO) < 0 )
{
fprintf(log_file, "SDL could not initialize! SDL_Error: %sn", SDL_GetError());
}
else
{
//Create window
window = SDL_CreateWindow("SDL Tutorial", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);

if (window == NULL)
{
fprintf(log_file, "Window could not be created! SDL_Error: %sn", SDL_GetError());
}
else
{
//Get window surface
screenSurface = SDL_GetWindowSurface(window);
//Fill the surface white
SDL_FillRect(screenSurface, NULL, SDL_MapRGB(screenSurface->format, 0xFF, 0xFF, 0xFF));

//Update the surface
SDL_UpdateWindowSurface(window);

fprintf(log_file, "SDL_Error: %sn", SDL_GetError());
//Wait two seconds
SDL_Delay(2000);
}
}

//Destroy window
SDL_DestroyWindow(window);
//Quit SDL subsystems
SDL_Quit();

return 0;
}

它不起作用的原因是因为我没有设置事件循环。

我提供了有关如何绘制线条的文档,并在那里得到了一个例子。

SDL_Event event;
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {
done = SDL_TRUE;
}
}

最新更新