Skip to content

Commit

Permalink
update OpenGL part
Browse files Browse the repository at this point in the history
  • Loading branch information
CharonChui committed Apr 18, 2024
1 parent 1e85414 commit e853fbd
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 3 deletions.
9 changes: 7 additions & 2 deletions VideoDevelopment/OpenGL/1.OpenGL简介.md
Original file line number Diff line number Diff line change
Expand Up @@ -340,8 +340,13 @@ glBufferData是一个专门用来把用户定义的数据复制到当前绑定
- OpenGL允许我们同时绑定多个缓冲,只要它们是不同的缓冲类型(每一个缓冲类型类似于前面说的子集,每个VBO是一个小助理)。

- 配置OpenGL如何解释这些内存
通过顶点数组对象(Vertex Array Objects, VAO)来管理,数组中的每一个项都对应一个属性的解析。
**注意: VAO并不保存实际数据,而是放顶点结构的定义**
通过顶点数组对象(Vertex Array Objects, VAO)来管理,数组中的每一个项都对应一个属性的解析。

VAO(Vertex Array Object)是指顶点数组对象,主要用于管理 VBO 或 EBO ,减少 glBindBuffer 、glEnableVertexAttribArray、 glVertexAttribPointer 这些调用操作,高效地实现在顶点数组配置之间切换。

**注意: VAO并不保存实际数据,而是放顶点结构的定义**



![image](https://github.com/CharonChui/Pictures/blob/master/vao_vbo.jpg?raw=true)

Expand Down
13 changes: 12 additions & 1 deletion VideoDevelopment/OpenGL/7.OpenGL ES着色器语言GLSL.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,18 @@ precision mediump int;


#### Uniform
Uniform是一种从CPU中的应用向GPU中的着色器发送数据的方式,但uniform和顶点属性有些不同。

CPU在处理并行线程的时候,每个线程负责给完整图像的一部分配置颜色。
尽管每个线程和其他线程之间不能有数据交换,但我们能从CPU给每个线程输入数据。
因为显卡的架构,所有线程的输入值必须统一(uniform),而且必须设为只读。

也就是说,每条线程接收相同的数据,并且是不可改变的数据。这些输入值叫做uniform(统一值).

按业界传统应该在uniform值的名字前加u_,这样一看便知是uniform。

Uniform是一种从CPU中的应用向GPU中的着色器发送数据的方式,但uniform和顶点属性有些不同。

你可以把uniform想象成连通CPU和GPU的许多的小桥梁。

首先,uniform是全局的(Global)。
全局意味着uniform变量必须在每个着色器程序对象中都是独一无二的,而且它可以被着色器程序的任意着色器在任意阶段访问。
Expand Down
14 changes: 14 additions & 0 deletions VideoDevelopment/OpenGL/9.OpenGL ES纹理.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,20 @@

### 纹理


现实生活中,纹理(Texture)最通常的作用是装饰 3D 物体,它就像贴纸一样贴在物体表面,丰富了物体的表面和细节。

在 OpenGLES 开发中,纹理除了用于装饰物体表面,还可以用来作为存储数据的容器。

那么在 OpenGLES 中,纹理实际上是一个可以被采样的复杂数据集合,是 GPU 的图像数据结构,纹理分为 2D 纹理、 立方图纹理和 3D 纹理。

2D 纹理是 OpenGLES 中最常用和最常见的纹理形式,是一个图像数据的二维数组。纹理中的一个单独数据元素称为纹素或纹理像素。

立方图纹理是一个由 6 个单独的 2D 纹理面组成的纹理。立方图纹理像素的读取通过使用一个三维坐标(s,t,r)作为纹理坐标。

3D 纹理可以看作 2D 纹理作为切面的一个数组,类似于立方图纹理,使用三维坐标对其进行访问。


在OpenGL中简单理解就是一张图片,在学习之前需要明白这几个概念,不然很容易迷糊,不知道为什么要这样去调用api,到底是什么意思.

- 纹理Id:句柄,纹理的直接引用
Expand Down

0 comments on commit e853fbd

Please sign in to comment.