SDL2窗口/表面的说明?

时间:2014-11-13 13:19:17

标签: c++ sdl-2

我做了一个简短的程序来测试SDL2,虽然有一些事情我不明白它们是如何工作的。

所以我创建了一个窗口和一个表面:

SDL_Window *window = nullptr;
SDL_Surface *windowSurface = nullptr;

现在我有了这个(我不会得到的部分):

window = SDL_CreateWindow("Window name", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN);
windowSurface = SDL_GetWindowSurface(window);

所以第一行:我使用SDL_createWindow()函数创建一个名为window的窗口。第二行,我不知道发生了什么 - 解释?

最后我有这个:

SDL_BlitSurface(currentImage, NULL, windowSurface, NULL);
SDL_UpdateWindowSurface(window);

然后是一些清理代码,将指针设置回nullptr并退出程序/销毁窗口等。

1 个答案:

答案 0 :(得分:1)

您粘贴的代码执行以下操作:创建名为“窗口名称”的SDL窗口,将其水平和垂直位置设置为居中,将窗口大小设置为640 x 480并将其标记为如图所示。 第二行获取SDL表面绑定到此窗口。

这意味着:创建窗口,实际设置和打开GL窗口以及GPU纹理(Surface,尽管SDL2具有Textures的单独类),它将被绘制。修改使用GetWindowSurface获取的曲面将修改刚刚创建的窗口上的像素。

Bliting正在将一个像素数组应用于目标纹理,意思是:嘿,我得到了这个图像/预渲染帧等。我想把它应用到这个表面,这样我就可以显示它。 Blit it。

我希望这有用:>

您可以在此处找到有关SDL的更多信息

Official SDL wiki

LazyFoo

LazyFoo提供了旧SDL所有内容的完整教程和解释,但SDL2中的许多内容都是相同的