For retina displays width and height will end up significantly higher than the original input values.
来自 https://learnopengl.com/Getting-started/Hello-Window
color buffer (a large 2D buffer that contains color values for each pixel in GLFW’s window) that is used to render to during this render iteration and show it as output to the screen.
来自 https://learnopengl.com/Getting-started/Hello-Window
Double buffer 双缓冲
When an application draws in a single buffer the resulting image may display flickering issues. This is because the resulting output image is not drawn in an instant, but drawn pixel by pixel and usually from left to right and top to bottom. Because this image is not displayed at an instant to the user while still being rendered to, the result may contain artifacts. To circumvent these issues, windowing applications apply a double buffer for rendering. The front buffer contains the final output image that is shown at the screen, while all the rendering commands draw to the back buffer. As soon as all the rendering commands are finished we swap the back buffer to the front buffer so the image can be displayed without still being rendered to, removing all the aforementioned artifacts.
当应用程序在单个缓冲区中绘制时,生成的图像可能会显示闪烁问题。这是因为生成的输出图像不是立即绘制的,而是逐像素绘制的,通常是从左到右、从上到下。由于该图像在渲染过程中不会立即显示给用户,因此结果可能包含伪影。为了避免这些问题,窗口应用程序应用双缓冲区进行渲染。前缓冲区包含屏幕上显示的最终输出图像,而所有渲染命令都绘制到后缓冲区。一旦所有渲染命令完成,我们就将后台缓冲区交换到前台缓冲区,以便可以显示图像而无需渲染,从而消除所有上述伪影。
来自 https://learnopengl.com/Getting-started/Hello-Window
An iteration of the render loop is more commonly called a frame.
来自 https://learnopengl.com/Getting-started/Hello-Window
Whenever we call glClear and clear the color buffer, the entire color buffer will be filled with the color as configured by glClearColor