OpenGL ES 学习(一) -- 基本概念

news2024/11/23 11:27:11

最近在研究 SurfaceView 和 TextureView,发现栅格化这东西,一直没怎么搞明白,一搜都是关于 OpenGL 的,没办法,当初也是要学习这个,现在重试拾起。

之前接触 OpenGL ,是主要解决一个渲染模糊问题,使用 OpenGL 就不会,而使用 SurfaceView 则不会,但存在延时问题,一直没扣明白,这个系列,期待重新认识 OpenGL 。Android 图形学这东西,真的好多东西啊 - - 。

一. OpenGL ES 是什么?

OpenGL (open graphics library)是一个跨平台的图像程序接口,用于调用硬件的2D ,3D 图形处理器,是一种图形处理硬件的标准软件接口。
而 OpenGL ES 是 OpenGL 的分支,针对手机和嵌入式设备,裁减了 OpenGL 部分不必要的功能。

二. 应用场景

  • 游戏
  • 视频播放器
  • 图片,视频剪辑,特效

三. Android 对 OpenGL ES 的支持

Android 支持多版 OpenGL ES API (参考https://www.jianshu.com/p/48c52f862f42):

OpenGL ES 版本Android 版本兼容性功能
1.0 & 1.1Android 1.0固定的图像管道,开发难度相比2.0低
2.0Android 2.2 (API level 8)不兼容1.x可编程的渲染管道,性能效率更高,开发难度更高
3.0Android 4.3 (API level 18)兼容2.0性能更高,支持ETC2格式的透明纹理压缩
3.0Android 5.0 (API level 21)兼容2.0/3.0新增计算着色器、单独的着色器对象等新特性,更多查看Android5.0特性

四. 学习选择

建议还是选择 OpenGL 2.0 版本,这个跟设备厂商有关,就算版本是 4.3 以上,厂商也不一定实现了 3.0 的接口。

如果你的应用使用的 OpenGL 功能不一定在所有设备上可用,则你必须在 AndroidManifest.xml 文件中包含这些要求。以下是最常见的 OpenGL 清单声明:

    <!-- Tell the system this app requires OpenGL ES 2.0. -->
    <uses-feature android:glEsVersion="0x00020000" android:required="true" />
    

各类版本如下:

glEsVersion 值版本
2.00x00020000
3.00x00030000
3.10x00030001

五. OpenGL ES 在系统中的作用是什么?

通过下面这张图可以看到,它其实是 CPU 和 GPU 图形交互的一个桥梁,可以理解成一个库(图片来源https://www.jianshu.com/p/48c52f862f42)
在这里插入图片描述
因为 GPU 在处理逻辑运算方面,有天然的优势,因此,可以理解 OpenGL ES 就是一个能操作 GPU 的API。

六. 开发

  • 通过 Android 官方标准接口,调用 OpenGL
  • C 语言编写 OpenGL 代码,再通过 Jni 调用 (跨平台可以考虑)

参考:
https://learnopengl-cn.github.io/01%20Getting%20started/01%20OpenGL/
https://www.jianshu.com/p/8dd045253ef7
https://www.jianshu.com/p/48c52f862f42

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/20578.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaEE-操作系统

✏️作者&#xff1a;银河罐头 &#x1f4cb;系列专栏&#xff1a;JavaEE &#x1f332;“种一棵树最好的时间是十年前&#xff0c;其次是现在” 目录操作系统介绍操作系统的定位进程进程控制块内存管理进程间通信思维导图总结操作系统介绍 操作系统是一组做计算机资源管理的软…

文献学习01_Attention Is All You Need_20221119

论文信息 Subjects: Computation and Language (cs.CL); Machine Learning (cs.LG) &#xff08;1&#xff09;题目&#xff1a;Attention Is All You Need &#xff08;你需要的就是关注&#xff09; &#xff08;2&#xff09;文章下载地址&#xff1a;https://doi.org/10.4…

今天给大家介绍一篇基于javaWeb的汽车订票系统的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

牛客网之SQL非技术快速入门(3)-排序、关联关系

知识点&#xff1a; &#xff08;1&#xff09;order by colunm_name(s) ASC|DESC order by ID ASC,name ASC,sex DESC 不写就是默认升序&#xff0c;DESC降序 &#xff08;2&#xff09;3中关联关系&#xff1a;left join、right join、inner join/join 21、现在运营想要查…

【微信开发第四章】SpringBoot实现微信H5支付

前言 在进行微信公众号业务开发的时候,微信支付可以说是非常重要的一环。该篇文章每一步都有记录&#xff0c;力争理解的同时各位小伙伴也能够实现功能 文章目录前言1、公众号配置2、微信支付实现代码总结1、公众号配置 1、绑定域名 先登录微信公众平台进入“设置与开发”&…

阿里云架构实战之ALB(应用型负载均衡)介绍与搭建

ALB介绍 服务器端负载均衡SLB&#xff08;Server Load Balancer&#xff09;是一种对流量进行按需分发的服务&#xff0c;通过将流量分发到不同的后端服务来扩展应用系统的服务吞吐能力&#xff0c;并且可以消除系统中的单点故障&#xff0c;提升应用系统的可用性。 阿里云负…

代码随想录算法训练营第60天 | 一刷结束篇 84.柱状图中最大的矩形

代码随想录系列文章目录 一刷总结篇 文章目录代码随想录系列文章目录84.柱状图中最大的矩形dp 普通思路单调栈一刷总结篇84.柱状图中最大的矩形 题目链接 这道题和接雨水是两个相似的题&#xff0c;相辅相成的那种&#xff0c;双指针是过不了力扣的会超时&#xff0c;所以我也…

pandas提取键值对(json和非json格式)

&#xff08;欢迎大家关注我的公众号“机器学习面试基地”&#xff0c;之后将在公众号上持续记录本人从非科班转到算法路上的学习心得、笔经面经、心得体会。未来的重点也会主要放在机器学习面试上&#xff01;&#xff09; 最近工作中需要解析一些有模型输入输出信息的csv日志…

SpringBoot+Mybaits搭建通用管理系统实例七:访问接口Api层功能实现

一、本章内容 系统api接口层实现,实现系统对外接口相应功能定义及实现,并通过Swagger实现接口文档的自动生成。 完整课程地址 二、开发视频 SpringBoot+Mybaits搭建通用管理系统实例二:api层实现 三、代码实现 使用基类的方式实现各方法接口的抽象实现,使用泛型的方式指定具…

linux上配置jdk和maven环境 (deepin适用)

前言 安装那些&#xff0c;就不说了&#xff0c;应该大家都下好才来配置的&#xff0c;下载安装的话&#xff0c;直接解压到一个目录就好&#xff0c;给个链接给你 jdk8下载链接&#xff1a; https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 命…

Docker Buildkit(新增 --mount、--security、--network 等特性)

BuildKit是Docker官方社区推出的下一代镜像构建神器。 可以更加快速&#xff0c;有效&#xff0c;安全地构建docker 镜像&#xff0c;自 docker v18.06 版本起已经集成了该组件。 Buildkit 是下一代 docker 构建组件&#xff0c;拥有众多特性&#xff1a; 自动垃圾收集可扩展…

静态WEB容器镜像最小化实践

在现代的B/S架构应用中&#xff0c;我们会做前后端分离&#xff0c;某些前端Web服务会将编译完成的静态文件放到一个web服务器进行部署。例如&#xff0c;我的博客也是基于Hugo编译的静态文件来进行部署的。 那在容器化部署模式下&#xff0c;我们需要基于一个web服务的基础容…

js:什么是编译时和运行时

编译时 源代码编译为机器可执行的二进制码。 编译过程中一般会识别你代码中的语法错误等问题&#xff0c;这个错误就叫编译时错误&#xff0c;做的一些检查也叫做编译时类型检查或者静态类型检查&#xff0c;因为静态就意味着代码还没有放到内存里去运行&#xff0c;只是把代…

九.STM32F030C8T6 MCU开发之电源掉电数据保存案例

九.STM32F030C8T6 MCU开发之电源掉电数据保存案例 0.总体功能概述 使用STD库–en.stm32f0_stdperiph_lib_v1.6.0。 1.掉电数据保存背景 掉电保存数据的时间内 电源稳定。也就是数据保存时间要尽量短,电源稳定要尽量长。 第一种,采用备用电池的方法来实现,增加了电池和更…

DFS搜索和输出所有路径

文章目录1、DFS搜所有路径2、用栈记录和输出路径3、例题3.1 C代码3.2 Python代码4、真题4.1 C代码4.2 Python代码2022.12将出版蓝桥杯大赛用书《蓝桥杯大赛-程序设计竞赛专题挑战教程》&#xff0c;作者&#xff1a;蓝桥杯组委会、罗勇军。   这本书解析了蓝桥杯大赛的常见考…

PLC学习笔记(二):PLC结构(1)

目录&#xff1a; PLC学习笔记&#xff08;一&#xff09;&#xff1a;概述 PLC学习笔记&#xff08;二&#xff09;&#xff1a;PLC结构&#xff08;1&#xff09; PLC学习笔记&#xff08;三&#xff09;&#xff1a;PLC结构&#xff08;2&#xff09; &#x1f981;&…

嵌入式FreeRTOS学习十一,深入理解任务调度机制

一.任务调度机制 可抢占&#xff1a;高优先级的任务先运行时间片轮转&#xff1a;同优先级的任务轮流执行空闲任务礼让&#xff1a;如果有同是优先级为0的其他就绪任务&#xff0c;空闲任务主动放弃一次运行机会函数调用vTaskDelay( xDelay5ms )可以主动放弃任务执行&#xff…

大学物理·第8章【电磁感应、电磁场】

from now on, 以后的篇幅我都不会写太多了。因为效果也不一定有&#xff0c;还很浪费时间。 感应电动势 那个奥特曼变身器的符号是 磁链 看看划线公式即可 动生电动势&#xff1a;dξ vB dl 例 如果&#xff0c;到时候复习的时候觉得简单的话&#xff0c;就删掉好了 自感、互…

【HTML5】登录页面制作简易版

刚开始学习Java。文件的命名&#xff0c;讲道理应该以英文为主&#xff0c;但是英语又不好&#xff0c;所以只好用拼音&#xff0c;最痛苦的应该算是那些英语又不好&#xff0c;又想秀一下的程序员&#xff0c;一半英语一半拼音&#xff0c;如mainFangFa~~~你说看了糟心不糟心。…

山东大学线性代数-1-矩阵-1

目录 1.2 几种特殊的矩阵 1.2.1 方阵 1.2.2 零矩阵 1.2.3 对角矩阵 1.2.4 单位矩阵 1.2.5 数量矩阵 1.2.6 三角阵 1.2.7 梯形阵 1.3 矩阵的运算&#xff08;一&#xff09; 1.3.1 相等 1.3.2 加、减法 1.3.3 数乘 1.3.4 矩阵的乘法 1.4 矩阵的运算&#xff08;二&#x…