我正在学习使用SDL库。然而,在我遇到的许多问题中,有一个我在互联网上找不到解决方案。我使用SDL_SetVideoMode
设置了视频模式特性,但是在运行程序时没有出现新窗口。唯一发生的事情是我的终端显示一个奇怪的模式,但看起来不像我应该拥有的窗口,即使它有,它不打开一个新窗口。这发生在我试图运行程序的shell窗口中。
以下是该计划:
#include <stdlib.h>
#include <SDL/SDL.h>
void pause(void)
{
int on = 1;
SDL_Event event;
while (on == 1)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
on = 0;
}
}
}
int main(void)
{
if (SDL_Init(SDL_INIT_VIDEO) == -1)
return EXIT_FAILURE;
else
{
SDL_SetVideoMode(1024, 576, 32, SDL_HWSURFACE);
SDL_WM_SetCaption("SDL TEST", NULL);
pause();
SDL_Quit();
}
return EXIT_SUCCESS;
}
我使用的是Makefile,这就是它内部的内容:
FLAGS=-Wall -Wextra -Werror
SDLFLAG=-lSDL
NAME=sdl1
all: ${NAME} clean
${NAME}: ${NAME}.o
gcc -o ${NAME} ${NAME}.o ${FLAGS} ${SDLFLAG}
${NAME}.o: ${NAME}.c
gcc -o ${NAME}.o -c ${NAME}.c ${FLAGS} ${SDLFLAG}
clean:
rm -rf *.o
mrproper: clean
rm -rf ${NAME}
发生了什么事?为什么我没有一个名为“SDL TEST”的新的空窗口?
答案 0 :(得分:1)
看起来SDL库试图使用libcaca
显示您的窗口首先尝试,如果您可以通过在shell中执行xterm
来打开与XServer的连接。如果可行,请尝试使用
SDL_VIDEODRIVER=x11 ./sdl1
强制使用x11视频驱动程序,看看它是否正常工作。