简述

作者: 郑捡书 | 来源:发表于2019-04-17 10:10 被阅读0次
  • OpenGL(全写Open Graphics Library)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。
  • OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三维图形 API 的子集,所以更加轻便,在OpenGL ES的世界里,没有四边形、多边形,无论多复杂的图形都是由点、线和三角形组成的。


OpenGL ES 2.0中基本概念
  • 着色器(Shader):是在GPU上运行的小程序,使用OpenGL ES SL语言来编写,它是一个描述顶点或像素特性的简单程序。
  • 顶点着色器:对于发送给GPU的每一个顶点,都要执行一次顶点着色器。其功能是把每个顶点在虚拟空间中的三维坐标变换为可以在屏幕上显示的二维坐标,并带有用于z-buffer的深度信息。顶点着色器可以操作的属性有:位置、颜色、纹理坐标,但是不能创建新的顶点。
  • 片元着色器:为组成点线三角形的每个片段生成最终的颜色,针对每个片段,它都会执行一次;一个片段是一个小的,单一颜色的长方形区域,类似于屏幕像素

OpenGL ES中有两种投影方式:正交投影和透视投影。正交投影,物体不会随距离观测点的位置而大小发生变化。而透视投影,距离观测点越远,物体越小,距离观测点越近,物体越大。

OpenGL ES 2.0过程及理解
读取顶点数据——执行顶点着色器——组装图元——光栅化图元——执行片元着色器——写入帧缓冲区——显示到屏幕上

  • OpenGL作为本地库直接运行在硬件上,没有虚拟机,也没有垃圾回收或者内存压缩。在Java层定义图像的数据需要能被OpenGL存取,因此,需要把内存从Java堆复制到本地堆。
  • 顶点着色器是针对每个顶点都会执行的程序,是确定每个顶点的位置。同理,片元着色器是针对每个片元都会执行的程序,确定每个片元的颜色。
  • 着色器需要进行编译,然后链接到OpenGL程序中。一个OpenGL的程序就是把一个顶点着色器和一个片段着色器链接在一起变成单个对象。
使用步骤概括
  1. 在AndroidManifest.xml文件中设置使用的OpenGL ES的版本:
   <!-- 3.0的版本为0x00030000,3.1的版本为0x00030001。-->
  <!-- Tell the system this app requires OpenGL ES 2.0. -->
  <uses-feature android:glEsVersion="0x00020000" android:required="true" />
      // 动态代码
      ActivityManager activityManager = (ActivityManager) 
      getSystemService(ACTIVITY_SERVICE);
      ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
      if (configurationInfo.reqGlEsVersion >= 0x2000) {
           glSurfaceView.setEGLContextClientVersion(2);
      }
  1. 用GLSurfaceView作为显示三角形的View,图形的具体渲染工作都是在Render
    中完成的。
  2. 实现GLSurfaceView的Render,在Render中完成三角形的绘制,具体行为有
  • 加载顶点和片元着色器
  • 确定需要绘制图形的坐标和颜色数据
  • 创建program对象,连接顶点和片元着色器,链接program对象。
  • 设置视图窗口(viewport)。
  • 将坐标数据颜色数据传入OpenGL ES程序中
  • 使颜色缓冲区的内容显示到屏幕上。
一般绘制图形流程
1. 创建顶点着色器和片元着色器
2. 创建程序
3. 添加顶点着色器和片元着色器到程序
4. 连接程序
5. 使用程序
6. 获取顶点着色器句柄
7. 启用句柄 
8. 设置顶点着色器句柄数据
9. 获取片元着色器句柄
10. 设置片元着色器句柄数据
11. 绘制
12. 禁用顶点着色器句柄

相关文章

  • 新人简述

    新人简述http://www.jianshu.com/新人简述

  • docker

    简述 Containers简述 Services docker? 创建 container Services 命令...

  • 战略管理【1059】

    一、请简述战略规划的几个过程? 二、请简述拟定战略的一般程序? 三、请简述优化公共部门战略管理的过程? 四、请简述...

  • 财政学 【0465】

    1.简述我国的国家预算体系。 2.简述市场失灵的含义及类型。 3.简述税收的特性。 4.简述社会保障基金的不同筹资...

  • 17背简答 第二天上午

    11.简述教育的文化功能 12.简述人口对教育的制约作用 13.简述教育对人口再生产的作用 14.简述影响人的身心...

  • PILLOW图片中加入中文 曲线救国Opencv

    索引 简述 准备 示例 效果图 结语 简述 我在使用opencv2或3的时候想...

  • 财政学[9035]

    1.简述财政的职能。 2.简述税收制度的基本要素。 3.简述区分公共物品与私人物品的基本标准。 4.简述税负转嫁与...

  • 政治经济学【9104】

    1.简述劳动力商品的特点。 2.简述货币的本质与职能。 3.简述单个资本增大的途径。 4.简述产业资本循环经历的阶...

  • 17背简答 第三天下午

    11.简述教育的文化功能12.简述人口对教育的制约作用13.简述教育对人口再生产的作用14.简述影响人的身心发展的...

  • 17背简答 第三天上午

    21.简述现代教育制度的发展趋势 22.简述教师劳动的特点 23.简述终身教育的特点 24.简述教师的职业素养 2...

网友评论

      本文标题:简述

      本文链接:https://www.haomeiwen.com/subject/drnudqtx.html