GL基础概念

描述GL中的一些基础概念

预计阅读时间: 4 分钟

一、OpenGL/WebGL是什么

概述

让我们从几个关键角度来了解 OpenGL/WebGL:

1. 是什么性质?

规范定义

OpenGL 作为接口规范,本质上是一套标准化的 API 定义,而不是具体的实现。

一般它被认为是一个 API,包含了一系列可以操作图形、图像的函数。然而,OpenGL 本身并不是一个API,它仅仅是一个由 Khronos组织制定并维护的规范(Specification)。

实现细节

OpenGL 规范严格规定了每个函数该如何执行,以及它们的输出值。至于内部具体每个函数是如何实现(Implement)的, 将由 OpenGL 库的开发者自行决定(实际的 OpenGL 库的开发者通常是显卡的生产商)

2. 是怎么实现的?

状态机模式

OpenGL 自身是一个巨大的状态机(State Machine):一系列的变量描述 OpenGL 此刻应当如何运行。 OpenGL 的状态通常被称为 OpenGL 上下文(Context)。

3. 怎么使用?

使用方式

我们通常使用如下途径去更改 OpenGL 状态:

  • 设置选项
  • 操作缓冲
  • 使用 OpenGL 上下文来渲染

4. 和WebGL的关系?

WebGL简介

WebGL 是基于 OpenGL ES 的一个规范,由浏览器实现,专门用于在浏览器中进行 3D 渲染。它继承了 OpenGL 的核心特性,但针对 Web 环境进行了优化和调整。

关键区别
  • OpenGL:底层图形API,主要用于桌面应用程序
  • WebGL:基于 Web 的图形API,运行在浏览器中
  • OpenGL ES:OpenGL 的嵌入式系统版本,是 WebGL 的基础

二、图形渲染管线

OpenGL的大部分工作是把3D坐标转换成2D像素

概念

指的是一堆原始图形数据途经一个输送管道,期间经过各种变化处理最终出现在屏幕的过程:

  1. 把3D坐标转换成2D坐标
  2. 2D坐标转变为实际的有颜色的屏幕像素

图形渲染管线可以划分为多个阶段,每一个阶段会把前一个阶段的输出作为输入。每个阶段会有一个特定功能的程序来处理,这个程序称为着色器

三、着色器(Shader)

概念

图形渲染管线中特定功能的程序,其中最重要的是可编程着色器,按照功能可以划分为:

  • 顶点着色器 (Vertex Shader)
  • 几何着色器 (Geometry Shader)
  • 片段着色器 (Fragment Shader)

具体可以查看 着色器是什么

四、顶点(Vertex)

概念

顶点是构成几何图形的基本单位,通常表示为三维空间中的点。

TODO: 待迁移剩余文章内容