码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • OpenGL ES 学习(一) -- 基本概念


    OpenGL 学习教程
    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 学习(七) – 纹理
    代码工程地址: https://github.com/LillteZheng/OpenGLDemo.git

    OpenGL 是自己一直比较感兴趣的,刚好最近工作也有 OpenGL 的需求,所以,这里也记录一下学习过程。

    一. 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特性

    四. 学习选择

    首选 GL3.0 版本,现在2022年了,厂商基本支持 3.0 版本,而且3.0 也兼容2.0 ,所以直接上手3.0 即可。两者的改动,可自行搜索。

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

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

    各类版本如下:

    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/ 虽然是 C 写的,但是大同小异,里面一些专业解释还是非常靠谱的。
    • 比较好入门的教程:https://www.jianshu.com/p/d134a835ebec ,使用 Android 原生 OpenGL ES api 编写,不涉及C,对初学者特别友好,笔者也是根据该教程入门的。
    • 比较详细:https://juejin.cn/post/7121525553491869703 ,写的比较详细,通过场景,一步步理清编写步骤,就是字数偏多了些,容易走神。
    • 本教程:使用 Android 原生 OpenGL ES api 编写,不涉及C,也比较好入门,而且会根据官网资料去写教程,还是比较全面的。

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

  • 相关阅读:
    跨平台应用开发进阶(二十七)安卓应用加固签名后应用无法打开
    Liteos信号量的使用
    架构师选择题--信息安全技术(系统安全)
    Go简单实现协程池
    互联网摸鱼日报(2022-11-21)
    使用PostMan Canary测试受Identity Server 4保护的Web Api
    【Leetcode每日一题】 穷举vs暴搜vs深搜vs回溯vs剪枝_全排列 - 子集(难度⭐⭐)(65)
    Python 变量?对象?引用?赋值?一个例子解释清楚
    那些年印象深刻的面试
    apple pencil一定要买吗?Ipad专用笔推荐
  • 原文地址:https://blog.csdn.net/u011418943/article/details/127950019
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号