# OpenGL **Repository Path**: jackzhous/OpenGL ## Basic Information - **Project Name**: OpenGL - **Description**: openGLES 学习库 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 1 - **Created**: 2019-06-28 - **Last Updated**: 2023-03-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 什么是OpenGL ES? openGL是一个免费跨平台的图形库,能实现复杂的2D、3D图形,而OpenGL ES是专门针对嵌入式终端而裁剪的一版openGL库,其原理是OpenGL提供的API控制GPU,发送操作指令,控制图像渲染管线进行绘制,最后在通过EGL与本地窗口交互,渲染输出到屏幕;EGL中间层作为OpenGL与本地窗口的桥梁,主要完成 + 本地窗口通信 + 查询和配置surface并创建surface + 管理纹理图片资源 ## 渲染管线 openGL操作对象主要是GPU,GPU是显卡内部的核心组件,而GPU内部包含顶点渲染单元和像素渲染单元,前者负责图像模型绘制,后者负责为图像上色,早期的管线是固定管线如OpenGL ES1.0,现在OpenGL2.0支持可编程的渲染管线;这两个渲染管线也对应后面会用到的顶点着色器和片着色器 ## 图元 OpenGL只支持三种基本图像的绘制:点、线、三角形,任何复杂的图像都可以由这三种图像构成 ## 顶点着色器 根据传入的图元坐标,绘制图元,OpenGL ES是一个右手坐标系,屏幕中心是原点,x轴正方向向右,y轴正方向上,Z轴穿过屏幕指向正面,当我们作画时,我们向顶点着色器传入图像坐标,当涉及到空间变换、投影时,我们还可以往其传入矩阵,投影矩阵、观察矩阵等,对图像坐标进行转换; ## 片着色器 根据传入的颜色值对图像模型进行上色,如在纹理开发时,根据传入的纹理坐标点,取出对应的颜色,然后在对应的模型坐标值下进行上色 所以OpenGL在图像绘制时,一般经历如下几个步骤: ![在这里插入图片描述](https://images.gitee.com/uploads/images/2019/0724/103513_79164fc8_574412.png) __光栅化图元__ 就是把图元转化为一个个片元,片元在底层可以映射到像素,用于片着色器对其上色 __帧缓冲__ 可以理解为输出到屏幕最后一步中,缓存屏幕上需要显示的数据 以上只是一些基本的概念,在日常开发中我们还需要掌握以下几个知识: + OpenGL图形的基本绘制 + 视图转换、正交投影、透视投影、相机视角 + 纹理的使用 + 离屏渲染FBO + EGL的使用