android开发之OpenGL(一)

初识OpenGL

一、什么是OpenGL
1、OpenGL是一种应用程序编程接口,它是一种可以对图形硬件设备特性进行访问的软件库。
2、OpenGL被设计为一个现代化的、硬件无关的接口,因此我们可以在不考虑计算机操作系统或窗口系统的前提下,在多种不同的图形硬件系统上,或者完全通过软件的方式实现OpenGL接口。
3、OpenGL自身并不包含任何执行窗口任务,或者处理用户输入的函数。
4、OpenGL也没有提供任何用于表达三维物体模型,或者读取图像文件的操作。我们需要通过一系列的几何图元(点,线段,三角形,以及patch)来创建三维空间物体!
5、OpenGL API是过程性的,不是描述性的,即OpenGL不是面向对象的,所以OpenGL无法利用面向对象的特性。使用的时候只需要:程序与OpenGL的实现链接就可以了!
6、OpenGL的实现可以是软件实现,也可以是硬件实现。
软件实现:是对OpengGL函数调用时作出的响应并创建二维或三维图像的函数库。
硬件实现:则是通过设置能够绘制图形或图像的图形卡驱动程序
硬件实现要比软件实现快得多!!
这里写图片描述

OpenGL可以用来干什么?

1、OpenGL已经诞生很长时间了,1992年7月,SGI公司发布了OpenGL的1.0版本。
2、应用领域:视频、图形、图片处理,2D/3D游戏引擎开发,科学可视化,医学软件的开发 ,CAD(计算机辅助技术),虚拟实境(AR VR),AI人工智能

OpenGL ES和OpenGL有什么关系?

1、OpenGL ES是OpenGL的子集,针对手机、PDA和游戏主机嵌入式设备而设计
2、OpenGL ES 是从 OpenGL 裁剪定制而来的,去除了 glBegin/glEnd,四边形(GL_QUADS)、多边形(GL_POLYGONS)等复杂图元等许多非绝对必要的特性,剩下最核心有用的部分。
可以理解成:OpenGL ES是一个在移动平台上能够支持 OpenGL 最基本功能的精简规范。

OpenGL程序需要执行的主要操作步骤

1、从OpenGL的几何图元中设置数据,用于构建形状
2、使用不同的着色器对输入的图元数据执行计算操作,判断位置,颜色以及其他渲染属性。
3、将输入图元的数学描述 转换为与屏幕位置对应的像素片元,也称(光栅化)。
4、针对光栅化过程产生的每个片元,执行 片元着色器,从而决定这个片元的最终颜色和位置
5、如果有必要 可以对片元执行一些额外操作。
例如:判断片元对应的对象是否可见,或者将片元的颜色与当前屏幕位置的颜色进行融合。

开发语言与编程约定

我们以后会见到OpenGL的函数多是以gl开头,因为OpenGL的函数遵循一定的命名约定,它可以告诉我们这个函数来自哪个函数库,并且还可以告诉我们这个函数的参数个数和类型。
OpenGL的函数是采用以下的书写格式:
<函数库前缀> <根命令> <可选的参数数量> <可选的参数类型>
这里写图片描述

坐标系与变换

1、在开发OpenGL程序时,需要用到两个坐标系。
一个称为对象坐标系 :(物体坐标系)第一个坐标系是我们在开发中使用的坐标系。
另一个称为世界坐标系:(世界坐标系)第二个坐标系又称为窗口坐标系或屏幕坐标系,在这个坐标系中的单位是像素。
2、 在绘制的过程中,OpenGL会自动实现从对象到窗口坐标系的转换,所需要的信息是屏幕中显示窗口的尺寸和用户希望显示对象空间的大小。
3、OpenGL中所需要的坐标系变换由两个矩阵决定,
即:模型视图矩阵和投影矩阵,这些矩阵是OpenGL的状态的一部分。
设置这两种矩阵的典型步骤包括以下三个步骤:
(1) 指定我们希望修改的矩阵。
(2) 将矩阵设为单位矩阵。
(3) 修改当前矩阵为用户期望的矩阵。

OpenGL理解
这里写图片描述
OpenGL是使用客户端——服务端的形式实现的。
(客户端):我们编写的程序。
(服务端):计算机图形硬件厂商所提供的OpenGL实现。
在没有OpenGL的时候,CPU与GPU之间传递数据是通过控制器内存之间传递,传递速度非常的慢,内存在复制数据时,CPU和GPU都不能操作这个数据。OpenGL很好的解决这个问题,OpenGL创建了缓存区域,能够连续的管理RAM,保证数据传输不影响GPU处理数据效率。
这里写图片描述

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: OpenGL ES是一种用于开发图形应用程序的开放式图形编程接口。它被广泛用于Android系统上的游戏开发以及其他需要高性能图形渲染的应用程序中。下面是关于OpenGL ESAndroid开发中的一些要点: 1. OpenGL ES的版本:Android支持多个不同版本的OpenGL ES,如OpenGL ES 1.0、1.1、2.0和3.0。开发者根据自己的需求选择合适的版本。 2. 渲染管线:OpenGL ES使用可编程的渲染管线来处理图形渲染。开发者可以通过创建顶点着色器和片段着色器程序来自定义渲染过程,从而实现各种效果。 3. 缓冲对象:开发者可以使用OpenGL ES来创建和管理缓冲对象,如顶点缓冲对象(VBO)和帧缓冲对象(FBO)。这些缓冲对象用于存储图形数据,提高绘制效率。 4. 纹理映射:OpenGL ES允许开发者将纹理映射到三维对象上,以实现更加逼真的图形效果。开发者可以通过加载纹理图像并将其映射到顶点上来创建细节丰富的模型。 5. 事件处理:OpenGL ES提供了一些函数来处理触摸事件、加速度计变化等输入信息。开发者可以使用这些函数来实现交互式的图形应用程序。 6. OpenGL ES的集成:在Android开发中,开发者可以通过GLSurfaceView类来集成OpenGL ES。GLSurfaceView是Android提供的一个用于显示OpenGL ES图形的视图类。 总结来说,OpenGL ESAndroid开发中用于实现高性能图形渲染的重要工具。开发者可以利用它来创建各种各样的游戏和图形应用程序,并通过自定义着色器和纹理映射等技术来增加细节和逼真度。 ### 回答2: OpenGLES是一种用于开发移动设备和嵌入式系统的图形渲染API,它主要用于在Android平台上开发游戏和图形应用程序。使用OpenGLES开发者可以利用硬件加速的图形渲染功能,提供流畅的图形效果和高性能的图形渲染。 在Android平台上进行OpenGLES开发,首先需要在应用程序中引入OpenGLES库文件,并进行相关的环境设置。然后,开发者可以使用OpenGLES API提供的各种函数和方法来创建图形对象、设置渲染状态、进行变换和纹理映射等操作。同时,还可以使用OpenGLES提供的着色器语言,自定义渲染管线,实现更高级的图形效果。 在开发过程中,需要注意OpenGLES使用的坐标系统是以屏幕为中心的坐标系,而不是传统的以左上角为原点的坐标系。因此,在创建图形对象时,需要进行坐标转换。此外,还需要注意管理资源和内存,避免内存泄漏和资源浪费。 在实际开发中,可以利用OpenGLES创建各种图形效果,如平面、立体、光照、阴影等。同时,还可以通过OpenGLES实现用户交互,如触摸屏幕,操作物体的变换等。此外,还可以使用OpenGLES与其他Android组件进行交互,如利用OpenGL ES绘制图像进行相机预览、视频播放等。 总之,OpenGLESAndroid开发中具有重要的作用,能够实现高性能的图形渲染和丰富的图形效果,为开发者提供了强大的工具和技术支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值