OpenGL ES入门介绍

这篇具有很好参考价值的文章主要介绍了OpenGL ES入门介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.OpenGL ES的简介

2. 基本流程和概念

2.1 渲染的基本流程

2.2 管线

2.3 顶点

2.4 纹理

2.5 顶点着色器(VertexShader)

2.6 图元装配

2.7 光栅化

2.8 片段着色器(FragmentShader)

2.9 逐片段操作


        第一次接触OpenGL ES是两年前,但是看到OpenGL中各种专业名词和专业术语,感觉云里雾里,虽然按照书中的介绍实现了效果,但是终究还是没有理解。这个系列我们一起对OpenGL ES进行重新学习实践,掌握OpenGL ES 3.0,编写迷人的OpenGL ES 3.0的程序。

下面开始今天的主题。

1.OpenGL ES的简介

OpenGL(Open Graphics Library)是一个跨平台图像程序接口,用于二维和三位图片的渲染。OpenGL ES(Open Graphic Library Embedded Systems)是OpenGL的一个子集,用于手机和嵌入式设备

 在android中对OpenGL ES的支持如下

1. OpenGL ES 2.0 支持android2.2以后的版本

2. OpenGL ES 3.0 支持android4.3以后的版本

3. OpenGL ES 3.1 支持android5.0以后的版本

    基于目前android系统占比分布和OpenGL ES的版本使用趋势,我们基于OpenGL ES3.0进行学习实践。

**有个问题:OpenGL ES在整个系统中的作用是什么?**

通过下面两种图我们可以看到OpenGL ES是CPU和GPU交互的桥梁,是一个Lib

OpenGL ES入门介绍,图形渲染


 

 图片来源 [OpenGL(一) OpenGL入门](https://www.jianshu.com/p/92208a75283d)

OpenGL ES入门介绍,图形渲染


 

图片来源 [Android官方文档]

**那为什么需要OpenGL ES 这个桥梁呐?能不能CPU和GPU直接交互呐?**

将数据从一块内存复制到另一块内存中,传递速度是非常慢的,CPU主要处理逻辑控制,GPU在逻辑运算方面比较强大,可以高并行处理图形数据和复杂算法,我们对比看下CPU和GPU的内部结构

OpenGL ES入门介绍,图形渲染


 

 图片来源 [OpenGL(一) OpenGL入门](https://www.jianshu.com/p/92208a75283d)
 

2. 基本流程和概念

OpenGL ES 3.0 实现了具有可编程着色功能的图形管线,有两个规范组成:OpenGL ES 3.0 API 和 GLSL着色器语言。在学习这些规范之前,我们先了解下相关的基本概念

2.1 渲染的基本流程

OpenGL ES入门介绍,图形渲染

> OpenGL在处理Shader时,和其他编译器一样。通过编译、链接等步骤,生成了着⾊器程序(glProgram),着⾊器程序同时包含了顶点着⾊器和⽚段着⾊器的运算逻辑。在OpenGL进行绘制的时候,⾸先由顶点着⾊器对传⼊的顶点数据进行运算。再通过图元装配,将顶点转换为图元。然后进行光栅化,将图元这种⽮量图形,转换为栅格化数据。最后,将栅格化数据传入⽚段着⾊器中进行运算。⽚段着色器会对栅格化数据中的每⼀个像素进行运算,并决定像素的颜⾊。

2.2 管线

它是一系列数据处理的过程,将应用程序的数据最终转换到渲染的图像。下图展示了OpenGL ES 图形管线

OpenGL ES入门介绍,图形渲染

图片来源:《OpenGL ES 3.0 编程指南》

2.3 顶点

OpenGL ES 的基本元素有点、线、三角形,就像盖钢架结构的房子一样,先确定好位置,搭出框架,OpenGL ES 也需要确定好位置即顶点

OpenGL ES入门介绍,图形渲染

2.4 纹理

纹理通常是一张图片,也可以用来存储大量的数据,这些数据可以发送到着色器。我们这个章节了解下纹理作为一张图片的意义。

 **那么为什么需要纹理呐?**

 我们可以为每个顶点添加颜色来丰富图像的细节,如果想让图形开起来更加有趣真实,我们就必须有足够的顶点从而指定足够多的颜色,但这会产生很多额外开销。使用纹理可以避免这个问题

> 你可以想象纹理是一张绘有砖块的纸,无缝折叠贴合到你的3D的房子上,这样你的房子看起来就像有砖墙外表了。因为我们可以在一张图片上插入非常多的细节,这样就可以让物体非常精细而不用指定额外的顶点。

OpenGL ES入门介绍,图形渲染

> 图片来源

> LearnOpenGL CN

下面是一张怀旧滤镜的纹理图

OpenGL ES入门介绍,图形渲染

2.5 顶点着色器(VertexShader)

顶点着色器一般用来处理图形每个顶点的变换,例如 平移、缩放、旋转、投影等

 顶点着色器是OpenGL ES中用于计算顶点属性的程序,每个顶点都会并行的执行一次顶点着色器程序。

2.6 图元装配

图元(Primitive)是点、线、三角形等基本几何对象,图元的每个顶点被发送到顶点着色器处理,而图元装配就是把这些顶点做合成图元

2.7 光栅化

光栅化是把顶点数据转换为片元的过程。将有基本元素(点、线、三角形)组成的几何图元变为二维图像的过程。

 这个过程包含两部分内容

1. 确定视图坐标中哪些区域被基本图元占用

2. 分配一个颜色值和一个深度值到各个区域

2.8 片段着色器(FragmentShader)

片段着色器又叫片元着色器,用来处理图形中每个像素点颜色计算和填充

2.9 逐片段操作

在逐片段操作阶段,每个片段上会执行 像素归属测试、裁剪测试、模版和深度测试、混合、抖动

> 在测试阶段之后,如果像素依然没有被剔除,那么像素的颜色将会和帧缓冲区中颜色附着上的颜⾊进⾏混合,混合的算法可以通过OpenGL的函数进行指定。但是OpenGL提供的混合算法是有限的,如果需要更加复杂的混合算法,一般可以通过像素着色器进行实现,当然性能会⽐比原⽣的混合算法差一些.文章来源地址https://www.toymoban.com/news/detail-813393.html

到了这里,关于OpenGL ES入门介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenGL ES FBO 离屏渲染详解(附项目源码)

    该原创文章首发于微信公众号:字节流动 FBO(Frame Buffer Object)即帧缓冲区对象,实际上是一个可添加缓冲区的容器,可以为其添加纹理或渲染缓冲区对象(RBO)。 FBO 本身不能用于渲染,只有添加了纹理或者渲染缓冲区之后才能作为渲染目标,它仅且提供了 3 种附着(Attac

    2024年02月12日
    浏览(48)
  • 实验一OpenGL图形编程入门

    一、 实验目的 1.了解和掌握OpenGL的安装。 2.掌握一个简单的基于OpenGL的C++程序结构。 3.掌握Win32程序框架。 4.掌握OpenGL中若干基本图形的绘制。 二、 实验环境 硬件要求: PC,主流配置,最好为独立显卡,显存512MB以上。 软件环境: 操作系统:Windows 7/Windows 8O 语言开发工具:

    2024年02月06日
    浏览(46)
  • 3586芯片的Ubuntu系统的 GPU 是否支持必要的图形API(如 OpenGL ES)

    3586芯片的Ubuntu系统通常支持GPU,并且通常支持必要的图形API,如OpenGL ES。然而,具体支持情况可能会因不同的GPU型号和驱动程序而有所不同。 在Ubuntu系统中,您可以通过检查GPU驱动程序是否已安装以及它们的版本来确认是否支持所需的图形API。您可以使用以下命令来检查驱

    2024年02月22日
    浏览(44)
  • 实验1 OpenGL图形编程入门(visualstudio2010)

    1、了解和掌握OpenGL的安装。 2、掌握一个简单的基于OpenGL的C++程序结构。 3.掌握win32程序框架。 4、掌握OpenGL中若干基本图形的绘制。 硬件要求: PC机,主流配置,最好为独立显卡,显存512M以上。 软件环境: 操作系统:Windows 7/Windows8 语言开发工具:Microsoft Visual studio 2010

    2024年02月01日
    浏览(34)
  • 【NET 7.0、OpenGL ES】使用Silk.NET渲染MMD,并实时进行物理模拟。

    有关mmd播放器,网上也有许多非常漂亮的实现,如 pmxeditor、saba、blender_mmd_tools等等。。 首先我想先介绍下我参考实现的仓库: sselecirPyM/Coocoo3D: Experimental MMD renderer using DX12 and DXR. (github.com),这是sselecirPyM大神使用NET 6.0和DX12实现的mmd渲染器,支持自定义渲染管线、光照等,感

    2024年02月08日
    浏览(42)
  • Android OpenGL ES 学习(十三) -离屏渲染FBO(截图)RBO, OES转 FBO

    Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学习(三) – 绘制平面图形 Android OpenGL ES 学习(四) – 正交投屏 Android OpenGL ES 学习(五) – 渐变色 Android OpenGL ES 学习(六) – 使用 VBO、VAO 和 EBO/IBO 优化程序 Android OpenGL ES 学习(七) –

    2024年02月12日
    浏览(42)
  • 【Android OpenGL开发】OpenGL ES与EGL介绍

    OpenGL(Open Graphics Library)是一个跨编程语言、跨平台的编程图形程序接口,主要用于图像的渲染。 Android提供了简化版的OpenGL接口,即OpenGL ES。 早先定义 OpenGL ES 是 OpenGL 的嵌入式设备版本,用于移动端平台(Android、iOS),但由于嵌入式设备要求的是高性能,所以一些其它纯

    2024年02月04日
    浏览(90)
  • Java使用Maven工程操作OpenGL ES绘制三角形和圆形;绘制完成后操作键盘控制然图形移动

    PS:想快速看到效果的小伙伴,可以在引入依赖后,先跳到完整代码部分 第一步:依赖引入 第二步:创建类,引入需要的包,设置全局参数 1.创建类 2. 包引入 3. 全局参数 第三步:定义一个初始化方法 init() 1. GLFW 错误信息的回调函数 这样做,在发生 GLFW 错误时,错误信息将

    2024年02月08日
    浏览(44)
  • OpenGL ES 渲染 NV21、NV12、I420、YV12、YUYV、UYVY、I444(建议收藏)

    本文主要讲解常见的 YUV 格式图像渲染方式,如果对 YUV 格式不是很熟悉的同学可以翻看旧文一文掌握 YUV 图像的基本处理,YUV 格式的介绍这里不再展开。 NV21、NV12 可以看成同一种结构,区别只是 uv 的交错排列顺序不同。 渲染 NV21/NV12 格式图像需要使用 2 个纹理,分别用于保

    2024年02月22日
    浏览(42)
  • OpenGL ES入门教程(一)编写第一个OpenGL程序

    从本文开始我将参考学习OpenGL ES应用开发实践指南 Android卷 [(美)KevinBrothaler著](提取码: 394m),并基于自己的理解以更加通俗易懂的方式讲解如何应用OpenGL ES。本系列教程的目标是应用OpenGL,所以不会涉及太多的理论知识,主要讲解方式是基于简单功能的代码拆解,学会对

    2024年02月06日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包