【问题标题】:Explanation of SDL2 windows/surfaces?SDL2 窗口/表面的解释?
【发布时间】:2019-05-13 02:41:53
【问题描述】:

我编写了一个简短的程序来测试 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 并退出程序/销毁窗口等。

【问题讨论】:

    标签: c++ sdl-2


    【解决方案1】:

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

    这意味着:创建 Window ,实际设置并打开 GL 窗口和一个 GPU 纹理(Surface,尽管 SDL2 有单独的纹理类),它将绘制到该纹理。修改使用 GetWindowSurface 获取的表面将修改您刚刚创建的窗口上的像素。

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

    希望对你有帮助:>

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

    Official SDL wiki

    LazyFoo

    LazyFoo 为旧的 SDL 提供了完整的教程和解释,但很多东西在 SDL2 中是一样的

    【讨论】:

    • 谢谢,这似乎更有意义。我一直在看 LazyFoo 的 - 那里有很好的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    相关资源
    最近更新 更多