SDL_Window
为物理像素,以及SDL_Renderer
存储设置/上下文的地方。所以你创建了一堆资源,并将它们挂在渲染器上; 然后当它准备好时,您告诉渲染器将它们放在一起并将结果发送到窗口。
1,渲染的流程
其基本原理是,首先创建一个window窗口,它是我们要渲染的目标。然后,要有一个渲染上下文,该上下文中一方面存放着要渲染的目标,也就是windows窗口;另一方面是存放着一个缓冲区,该缓冲区用于存放渲染的内容。缓冲区可以是SDL_Surface或者SDL_Texture。
渲染的内容可以是点、线、各种图形以及图片,视频的各种组合。这些组合后的内容首先被存放到缓冲区中,最终SDL将缓冲区中的内容渲染到窗口中。
所以渲染的基本流程如下:
- 创建窗口
- 创建渲染器
- 清空缓冲区
- 绘制要显示的内容
- 最终将缓冲区内容渲染到window窗口上。
2,什么是纹理
词语“纹理”在日常使用中表示物体的光滑度或粗糙度,但是在计算机图形学中,纹理指的是一张表示物体表面细节的位图。
SDL_Texture 与SDL_Surface相似,也是一种缓冲区。只不过它存放的不是真正的像素数据,而是存放的图像的描述信息。当渲染纹理时,SDL以这些描述信息为数据,底层通过OpenGL、D3D 或 Metal操作GPU,最终绘制出与SDL_Surface一样的图形,且效率更高(因为它是GPU硬件计算的)。
3,SDL_Window 与 SDL_Render
SDL_Window代表的是窗口的逻辑概念,它是存放在主内存中的一个对象。所以当我们调用SDL API 创建窗口后,它并不会被显示出来。
SDL_Render 是渲染器,它也是主存中的一个对象。对Render操作时实际上分为两个阶段:
一、渲染阶段。在该阶段,用户可以画各种图形渲染到SDL_Surface或SDL_Texture 中;
二、显示阶段。参SDL_Texture为数据,通过OpenGL操作GPU,最终将 SDL_Surfce 或SDL_Texture中的数据输出到显示器上。
参考: