OpenGL基础概念
基础概念,如运作,对象
本章全部内容都来自于LearnOpenGL CN
OpenGL是什么?
- 一般认为,OpenGL包含了一系列可以操作图形、图像的函数。
- 然而,OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范。且使用的几乎都是核心模式。
运作
- OpenGL自身是一个巨大的状态机(State Machine):一系列的变量描述OpenGL此刻应当如何运行。
- OpenGL的状态通常被称为OpenGL上下文(Context)。我们通常使用如下途径去更改OpenGL状态:设置选项,操作缓冲。
- 假设当我们想告诉OpenGL去画线段而不是三角形的时候,我们通过改变一些上下文变量来改变OpenGL状态,从而告诉OpenGL如何去绘图。
编译
- 链接器:
- glfw3.lib
- opengl32.lib
对象
- OpenGL库是用C语言写的,同时也支持多种语言的派生,但其内核仍是一个C库。我们将对象绑定至上下文的目标位置,从而实现调用。
1 |
|
GLAD
因为
OpenGL
只是一个标准/规范,具体的实现是由驱动开发商针对特定显卡实现的,OpenGL
驱动版本众多,它大多数函数的位置都无法在编译时确定下来。GLAD
是一个开源的库,它能解决我们上面提到的那个繁琐的问题。在这里我们能够告诉GLAD需要定义的OpenGL版本,并且根据这个版本加载所有相关的OpenGL函数。
GLAD用来管理OpenGL的函数指针,所以在调用任何OpenGL的函数之前我们需要初始化GLAD。
双缓冲
- 应用程序使用单缓冲绘图时可能会存在图像闪烁的问题。 这是因为生成的图像不是一下子被绘制出来的,而是按照从左到右,由上而下逐像素地绘制而成的。最终图像不是在瞬间显示给用户,而是通过一步一步生成的,这会导致渲染的结果很不真实。为了规避这些问题,我们应用双缓冲渲染窗口应用程序。前缓冲保存着最终输出的图像,它会在屏幕上显示;而所有的的渲染指令都会在后缓冲上绘制。当所有的渲染指令执行完毕后,我们交换(Swap)前缓冲和后缓冲,这样图像就立即呈显出来,之前提到的不真实感就消除了。
OpenGL基础概念
https://weihehe.top/2025/04/11/OpenGL/