OpenGL 概念整理

OpenGL 概念整理

1. OpenGL

1.1 术语说明

概念 描述 版本
OpenGL Open Graphics Library Khronos 定义GPU功能实现的SPEC,标准API 4.6
OpenGL ES Embedded System 为嵌入式系统定义的相关补充接口 3.2
EGL 用于GPU渲染与机器原生窗口之间通信的API,独立于OpenGL ES各个版本
Vulkan Khronos组织新定义的接口,相比于OpenGL更加高效 1.2

1.2 OpenGL 理解

从功能上理解,OpenGL 是开发者操作GPU渲染的工具,需要将所定义的行为给到GPU去执行渲染操作:

  1. 将绘制源数据提供给到GPU;
  2. 将执行操作(程序)给到GPU;
  3. 绘制完成后将显示内容提供给到framebuffer;

针对于上述功能需求,Khronos将OpenGL设计成为一组状态机,规定一系列的变量描述OpenGL此刻应当如何运行,其状态通常被称为上下文(Context),我们可以在程序中配置他们,这些状态会一直生效到下次改变

  • Context:作为状态机的上下文,描述当前状态的值以及改变状态的值;
  • Object: OpenGL将一系列具有相同功能的状态抽象出状态的子集称之为对象
  • OpenGL Shading Language:GPU的编程语言,使用GLSL来编写shader程序
概念 说明
Vertex 顶点 GPU渲染绘制是对于点的操作,这里是物体顶点坐标的计算操作
Fragment 片元操作,理解为对于像素点的颜色计算操作
Shader 着色器:GPU中执行程序的名称(ARM 将HW 叫做Shader Core),一般有Vertex、fragment、geometry等
Texture 作为Fragment输入操作的源数据,多种方式提供给到GPU

1.3 VBO、EBO、VAO的理解

顶点数据如何提供给到GPU:

对象 说明
VBO Vertex Buffer Object,一块buffer,描述顶点的数据对象
EBO Element Buffer Object,描述元素的数据对象,存储顶点的索引,可以复用顶点构建三角形
VAO Vertex Arrary Object,一块buffer,顶点数组对象,可以描述多个顶点

image-20210218174723184

GLfloat vertices[] = {
    0.5f, 0.5f, 0.0f,   // 右上角
    0.5f, -0.5f, 0.0f,  // 右下角
    -0.5f, -0.5f, 0.0f, // 左下角
    -0.5f, 0.5f, 0.0f   // 左上角
};

GLuint indices[] = { // 注意索引从0开始! 
    0, 1, 3, // 第一个三角形
    1, 2, 3  // 第二个三角形
};

	GLuint VBO, VAO, EBO;//声明变量

    glGenVertexArrays(1, &VAO);
    glGenBuffers(1, &am
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值