我做了一个简短的程序来测试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
并退出程序/销毁窗口等。
答案 0 :(得分:1)
您粘贴的代码执行以下操作:创建名为“窗口名称”的SDL窗口,将其水平和垂直位置设置为居中,将窗口大小设置为640 x 480并将其标记为如图所示。 第二行获取SDL表面绑定到此窗口。
这意味着:创建窗口,实际设置和打开GL窗口以及GPU纹理(Surface,尽管SDL2具有Textures的单独类),它将被绘制。修改使用GetWindowSurface获取的曲面将修改刚刚创建的窗口上的像素。
Bliting正在将一个像素数组应用于目标纹理,意思是:嘿,我得到了这个图像/预渲染帧等。我想把它应用到这个表面,这样我就可以显示它。 Blit it。
我希望这有用:>
您可以在此处找到有关SDL的更多信息
LazyFoo提供了旧SDL所有内容的完整教程和解释,但SDL2中的许多内容都是相同的