Skip to content

Commit

Permalink
更新opengl知识点
Browse files Browse the repository at this point in the history
Signed-off-by: JeffMony <[email protected]>
  • Loading branch information
JeffMony committed Jul 23, 2021
1 parent 1c39eaa commit bf59198
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 1 deletion.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
|音视频编辑问题|[音视频编辑问题](./edit/音视频编辑.md)|
|C++知识点|[C++知识点](./cpp/C++知识点.md)|
|OpenGL知识点|[OpenGL知识点](./opengl/openGL知识点.md)|
|OpenGL拓展知识|[OpenGL拓展知识点](./opengl/openGL拓展知识点.md)|

***

Expand Down
48 changes: 48 additions & 0 deletions opengl/openGL拓展知识点.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@


### 1.正交投影
正交投影就是将物体统一在归一化坐标中,使用正交投影,不管物体多远多近,物体看起来总是形状、比例相同的。<br>

需要用到投影矩阵来改变顶点坐标的范围,最后统一归一化处理即可。<br>
#### 1.1 顶点着色器中添加矩阵
```
attribute vec4 v_Position;
attribute vec2 f_Position;
varying vec2 ft_Position;
uniform mat4 u_Matrix;
void main() {
ft_Position = f_Position;
gl_Position = v_Position * u_Matrix;
}
```
#### 1.2 根据图像的宽高计算最终的大小
```
orthoM(float[] m, int mOffset, float left, float right, float bottom, float top, float near, float far)
Matrix.orthoM(matrix, 0, -width / ((height / 702f * 526f)), width / ((height / 702f * 526f)), -1f, 1f, -1f, 1f);
Matrix.orthoM(matrix, 0, -1, 1, - height / ((width / 526f * 702f)), height / ((width / 526f * 702f)), -1f, 1f);
```
#### 1.3 应用矩阵
GLES20.glUniformMatrix4fv(umatrix, 1, false, matrix, 0); <br>

在摄像头中应用比较多。

### 矩阵旋转
Matrix.ratateM(matrix, o, a, x, y, z); <br>
a : 正数表示逆时针旋转;负数表示顺时针旋转。<br>

上下翻转一下图片: <br>
Matrix.rotateM(mMatrix, 0, 180, 1, 0, 0);


### 多surface渲染同一纹理
> * 首先利用离屏渲染把图像渲染到纹理texture中
> * 通过共享EGLContext和texture, 实现纹理共享
> * 然后再新的Render里面可以对texture进行新的滤镜操作
### 单surface渲染多纹理
主要是利用opengl es绘制多次,把不同的纹理绘制到纹理或者窗口上。<br>

实际只需要改变opengl es从顶点数组开始取点的位置就行了。<br>
> * vertexBuffer.position(index); index是内存中的起始位置
> * GLES20.glVertexAttribPointer(vPosition, 2, GLES20.GL_FLOAT, false, 8, index);
4 changes: 3 additions & 1 deletion opengl/openGL知识点.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
- [OpenGL知识点](#opengl知识点)
- [1.OpenGL中重要的概念](#1opengl中重要的概念)
- [1.1 两种坐标系](#11-两种坐标系)
- [1.2 绘制的图形](#12-绘制的图形)
Expand All @@ -12,8 +13,9 @@
- [2.5 opengl es绘制纹理的过程](#25-opengl-es绘制纹理的过程)
- [2.6 共享上下文实现共享绘制](#26-共享上下文实现共享绘制)
- [3.自定义GLSurfaceView](#3自定义glsurfaceview)
- [3.1 自定义GLSurfaceView的流程](#31-自定义glsurfaceview的流程
- [3.1 自定义GLSurfaceView的流程](#31-自定义glsurfaceview的流程)

## OpenGL知识点
### 1.OpenGL中重要的概念
#### 1.1 两种坐标系
> * 顶点坐标系
Expand Down

0 comments on commit bf59198

Please sign in to comment.