Skip to content

Commit

Permalink
ADD:details
Browse files Browse the repository at this point in the history
  • Loading branch information
CatOnly committed Feb 24, 2021
1 parent e97e532 commit 0f6416c
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions OpenGL/Part0_BaseInfo.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ OpenGL 命令执行的结果影响 OpenGL 状态(由 OpenGL context 保存,
一般每个窗口都有一个上下文,可以保证上下文间的不互相影响
通过**创建上下文时传入要共享的上下文**,多个窗口的上下文之间图形资源可以共享
可以共享的:纹理、shader、Vertex Buffer 等,外部传入对象
不可共享的:Frame Buffer Object、Vertex Array Object 等 OpenGL 内置容器**对象**
不可共享的:Frame Buffer Object、Vertex Array Object(内存)、Vertex Buffer Object(显存)、等 OpenGL 内置容器**对象**



Expand Down Expand Up @@ -315,13 +315,15 @@ NVIDIA 的 CG(C for Graphic)

## 2. 垂直同步 vsync

由于显示器的刷新一般是逐行进行的,因此为了防止交换缓冲区的时候屏幕上下区域的图像分属于两个不同的帧,因此交换一般会等待显示器刷新完成的信号,在显示器两次刷新的间隔中进行交换,这个信号就被称为垂直同步信号,这个技术被称为垂直同步

定义:确保显卡的运算频率(GPU 一秒绘制的帧数)和 显示器刷新频率(硬件决定)一致,防止在快速运动场景下,由于**显卡运算速率大于显示器运算速率**导致快速运动的动作割裂情况(画面撕裂)

流程:`显卡绘制一帧时间 > 显示器刷新一帧时间 ? 显示器刷新(显卡等待) : 显示器显示上一帧,等待显卡绘制完成(屏幕卡顿);`

缺点:开启垂直同步,画面会有延迟,但并没有卡顿
缺点:开启垂直同步,画面会有延迟(无法达到显卡的最大运算速率),但并没有卡顿

规避缺点的方法:用三重缓冲代替垂直同步(三重缓冲:在双缓冲的基础上加了一个缓冲,显卡不需要等待显示器把画面显示完整了再开始画下一幅,而是选择直接在另一个后缓冲画图
规避缺点的方法:用三重缓冲代替垂直同步(三重缓冲:在双缓冲的基础上加了一个缓冲,引入了三缓冲区技术,在等待垂直同步时,来回交替渲染两个离屏的缓冲区,而垂直同步发生时,屏幕缓冲区和最近渲染完成的离屏缓冲区交换,实现充分利用硬件性能的目的



Expand Down

0 comments on commit 0f6416c

Please sign in to comment.