安卓 OpenGL ES 学习笔记
文章目录
- OpenGL 学习笔记
- OpenGL 是什么?
- OpenGL ES是什么?
- 怎么用?
- hello world
- 如何实现动画效果
- 参考文章
OpenGL 学习笔记
OpenGL 是什么?
OpenGL(Open Graphics Library)是一个跨平台的图形编程接口,用于渲染2D和3D图形。它提供了一系列函数和状态机,用于操作图形对象、设置渲染状态和执行图形操作。
OpenGL具有以下特点:
1、跨平台:OpenGL可以在多个操作系统上运行,包括Windows、MacOS、Linux等。
2、硬件加速:OpenGL可以利用计算机的图形硬件加速渲染过程,提高图形性能。
3、开放标准:OpenGL是一个开放的标准,由Khronos Group维护和发展,可以由各个硬件和软件厂商实现和扩展
4、低级接口:OpenGL是一个底层的图形接口,提供了对图形硬件的直接访问,开发者可以更加灵活地控制图形渲染过程。
使用OpenGL可以实现各种图形效果,包括渲染三维模型、绘制2D图形、实现光照效果、进行纹理映射等。它广泛应用于游戏开发、计算机辅助设计、科学可视化等领域。
OpenGL ES是什么?
OpenGL ES(OpenGL for EmbeddedSystems)是一种用于嵌入式系统的图形渲染API(应用程序编程接口)。它是OpenGL的子集,专门设计用于在移动设备、游戏机和其他嵌入式系统上进行图形渲染。
OpenGL ES提供了一组函数和状态机,用于管理图形渲染管线,实现2D和3D图形的绘制和渲染。它支持各种图形特效、纹理映射、光照、深度测试等功能,可以实现高性能的图形渲染。
OpenGL ES有三个版本:OpenGL ES 1.0、OpenGL ES 2.0和OpenGL ES
3.0。每个版本都有不同的特性和功能集,适用于不同的硬件和应用需求。
怎么用?
我是看 安卓 OpenGL ES 2.0 完全入门(一):基本概念和 hello world 学习的,大佬贴心的写了 demo ,GitHub 获取 下载即用,非常贴心。
hello world
1、准备一个布局文件,使用 GLSurfaceView 控件,用于最终的画面显示
<?xml version="1.0" encoding="utf-8"?>
<FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><android.opengl.GLSurfaceViewandroid:id="@+id/surface"android:layout_width="match_parent"android:layout_height="match_parent"/>
</FrameLayout>
2、绑定 GLSurfaceView 设置相关参数,最重要的是设置一个 Renderer,大部分的工作就是在这个 Renderer 中进行
mGLSurfaceView = (GLSurfaceView) findViewById(R.id.surface);mGLSurfaceView.setEGLContextClientVersion(2);
mGLSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
mRenderer = new MyRenderer(this);
mGLSurfaceView.setRenderer(mRenderer);
mGLSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);
3、新建一个 Renderer ,这里有很多的东西需要配置初始化,例如:Vertex Buffer、Shader、Viewport、Projection Matrix、Texture 等等。
GLSurfaceView.Renderer是Android中用于渲染OpenGL图形的接口。它定义了三个主要的回调方法,用于处理OpenGL图形的初始化、绘制和变化。
onSurfaceCreated方法:在Surface被创建时调用,用于进行OpenGL的初始化工作,比如设置背景色、启用深度测试等。
onSurfaceChanged方法:在Surface尺寸变化时调用,比如屏幕旋转或者窗口大小改变。在这个方法中,可以更新OpenGL的视口(Viewport)和投影矩阵(Projection
Matrix)等。
onDrawFrame方法:在每一帧绘制时调用,用于实际的绘制操作。在这个方法中,可以进行顶点数据的绑定、纹理的绑定、着色器的使用等。
OK,简单记了一下实现 OpenGL 步骤,然后具体实现中有非常多的概念以及操作细节需要去理解与记忆 ,也用思维导图头脑风暴了一下。

如何实现动画效果
1、每一帧绘制时,清除上一帧的颜色缓冲区再绘制纹理
2、通过插值器更新设置的参数(坐标,矩阵等)即可
@Override
public void onDrawFrame(GL10 unused) {// 清除颜色缓冲区GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);// 绘制纹理
}
参考文章
安卓 OpenGL ES 2.0 完全入门(一):基本概念和 hello world
OpenGL 学习系列—投影矩阵
《OpenGL ES 应用开发实践指南》
相关文章:
安卓 OpenGL ES 学习笔记
文章目录 OpenGL 学习笔记OpenGL 是什么?OpenGL ES是什么?怎么用?hello world如何实现动画效果 参考文章 OpenGL 学习笔记 OpenGL 是什么? OpenGL(Open Graphics Library)是一个跨平台的图形编程接口&…...
git分布式管理-头歌实验冲突处理、忽略文件
一、解决冲突 任务描述 在团队协作开发过程中,可能你和团队中的其他成员,都修改了某个文件的某一部分内容,且其他成员已将该修改推送到了远程仓库。这样当你需要合并他的代码的时候,可能就会在内容上出现冲突,这个时候…...
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
🌞前言 这里我们会实现一个项目:在linux操作系统下基于OpenCV和Socket的人脸识别系统。 目录 🌞前言 🌞一、项目介绍 🌞二、项目分工 🌞三、项目难题 🌞四、实现细节 🌼4.1 关…...
零售EDI:劳氏 Lowe‘s EDI项目案例
通过 EDI,企业与Lowes之间可以直接交换各种商业文档,如订单、发票、收据等,从而实现信息的实时交换,提高了供应链的效率和准确性。在现代供应链管理中,EDI 已经成为了不可或缺的重要工具。 作为一家拥有多条业务线的企…...
为什么不用 index 做 key?
“在 Vue 中,我们在使用 v-for 渲染列表的时候,为什么要绑定一个 key?能不能用 index 做 key?” 在聊这个问题之前我们还得需要知道 Vue 是如何操作 DOM 结构的。 虚拟DOM 我们知道,Vue 不可以直接操作 DOM 结构&am…...
Linux虚拟机安装Redis
官网下载压缩包:官网链接,然后将对应的tar.gz压缩包放入虚拟机下的/opt目录下。由于redis是C语言开发的,因此需要安装gcc编译器来编译代码,我们下载的压缩包里面是源代码,需要编译。通过yum install gcc指令下载C语言的…...
网络安全: Kali Linux 进行 SSH 渗透与防御
目录 一、实验 1.环境 2.nmap扫描目标主机 3.Kali Linux 进行 SSH 渗透 3.Kali Linux 进行 SSH 防御 二、问题 1.SSH有哪些安全配置 一、实验 1.环境 (1)主机 表1 主机 系统版本IP备注Kali Linux2022.4 192.168.204.154(动态&…...
近年来文本检测相关工作梳理
引言 场景文本检测任务,一直以来是OCR整个任务中最为重要的一环。虽然有一些相关工作是端对端OCR工作的,但是从工业界来看,相关落地应用较为困难。因此,两阶段的OCR方案一直是优先考虑的。 在两阶段中(文本检测文本识…...
文件系统事件监听
文件系统事件和网络IO事件一样,也可以通过epoll或者IOCP 事件管理器统一调度,当所监控的文件或文件夹发生了增删改的事件时,就会触发事件回调,进行事件处理。很常见的应用,如配置文件立即生效功能,就可以通…...
探秘HTTPS:如何通过SSL/TLS保证网络通信安全
目录 引言 详解HTTPS加密实现机制 SSL/TLS工作原理 结论 引言 随着网络安全威胁的日益增加,HTTPS通过SSL(Secure Sockets Layer)和TLS(Transport Layer Security)协议提供的加密技术变得至关重要。这些技术保证了用…...
Java算法之动态规划
Java算法之动态规划 前言 最近这一段时间一直在刷算法题,基本上一有时间就会做一两道,这两天做了几道动态规划的问题,动态规划之前一直是我比较头疼的一个问题,感觉好复杂,一遇到这样的问题就想跳过,昨…...
C++从零开始的打怪升级之路(day47)
这是关于一个普通双非本科大一学生的C的学习记录贴 在此前,我学了一点点C语言还有简单的数据结构,如果有小伙伴想和我一起学习的,可以私信我交流分享学习资料 那么开启正题 今天分享的是关于set和map的知识点 1.关联式容器 在前面&#…...
香橙派AIpro开发板开箱测评
2023年12月,香橙派联合华为发布了基于昇腾的Orange Pi AIpro开发板,提供8/20TOPS澎湃算力,能覆盖生态开发板者的主流应用场景,让用户实践各种创新场景,并为其提供配套的软硬件。香橙派AIpro开发板一经发布便吸引了众多…...
ISP基础概述
原文来自ISP 和摄像头基本知识 本文主要介绍ISP,以供读者能够理解该技术的定义、原理、应用。 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:计算机杂记 🎀CSDN主页 发狂的小花 dz…...
C++第一弹---C++入门(上)
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 【C详解】 C入门 1、C关键字(C98) 2、命名空间 2.1、命名空间定义 2.2、命名空间使用 3、C输入&输出 4、缺省参数 4.1、缺省参数概念 4.2、缺省参…...
VScode格式化快捷键
vscode格式化代码快捷键 如何使用快捷键格式化代码。使用Java的格式去设置,发现不起作用。 在这里记录一下: 在Windows中,vscode格式化代码快捷键是“ShiftAltF”; 在Mac中,vscode格式化代码快捷键是“ShiftOption…...
HCIP---IS-IS协议
文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 一.IS-IS协议概述 IS-IS是一种基于链路状态的内部网关协议(IGP),它使用最短路径优先算法(SPF或Dijkstra)进行路由计算。这种协议在自治…...
突破编程_C++_设计模式(组合模式)
1 组合模式的基本概念 C中的组合模式是一种对象结构型模式,它将多个对象组合成树形结构,以表示具有整体-部分关系的层次结构。在这个模式中,对单个对象(叶子对象)与组合对象(容器对象)的使用具…...
010Editor汉化版+下载+注册码+模板bug
项目场景: 这天我想使用我的不知名的一个破解版本的010Edit来查看一个EXE程序,并想使用模板功能,但是发现没有该模板还无法下载最新模板 问题描述 010Edit联网后需要注册码: 010 Editor 激活码生成器 使用方法 参照教程使用0…...
js【详解】BOM
浏览器对象模型 (Browser obiect Mode 简称 BOM) 浏览器对象即 window,调用window对象的属性和方法时,可以省略window window 常用的属性 Navigator 常用于获取浏览器的信息 navigator.userAgent;火狐浏览器范例: “…...
M3GIM2:面向mbed OS的3G IoT模组轻量级驱动库
1. 项目概述M3GIM2 是专为 mbed OS 平台设计的轻量级驱动库,面向日本 Tabrain 公司推出的3GIM(3G IoT Module)通信模组。该模组定位于工业级低功耗物联网终端,支持 WCDMA/HSDPA(UMTS Band I/VI/VIII)、内置…...
PyCharm 的智能开发助手:提升 Python 编码效率的利器
1. 为什么PyCharm是Python开发者的首选工具 第一次打开PyCharm时,我就被它的智能程度震惊了。作为一个长期使用记事本和基础编辑器写Python的开发者,突然发现代码可以自动补全、错误会被实时标记、函数定义能一键跳转,这种体验就像从自行车换…...
从Simulink到LabVIEW:VeriStand联合仿真中人机交互界面的高效构建与数据联动
1. VeriStand联合仿真基础架构解析 当我们需要将Simulink的算法模型与LabVIEW的人机界面进行深度整合时,VeriStand就像一位专业的翻译官。这个实时测试与仿真平台能够把不同软件的语言"翻译"成彼此都能理解的形式。我去年参与的新能源汽车电控项目就采用了…...
树莓派与PC间无线视频流传输:基于Python和OpenCV的实时图像处理方案
1. 项目背景与需求分析 当你用树莓派做自动驾驶小车或者远程监控项目时,最头疼的问题之一就是实时视频传输。传统SSH方式虽然能显示图像,但就像用老旧水管输水——流量一大就卡顿,连带机电控制也受影响。我去年做智能巡检机器人时就踩过这个坑…...
G-Helper:拯救华硕笔记本性能的3个关键技巧与实战指南
G-Helper:拯救华硕笔记本性能的3个关键技巧与实战指南 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Sc…...
MATLAB代码:储能参与调峰调频联合优化模型 关键词:储能 调频 调峰 充放电优化 联合运行...
MATLAB代码:储能参与调峰调频联合优化模型 关键词:储能 调频 调峰 充放电优化 联合运行 仿真平台:MATLABCVX 平台 主要内容:代码主要做的是考虑储能同时参与调峰以及调频的联合调度模型,现有代码往往仅关注储能在调峰…...
Qt网格布局实战:从入门到精通
1. Qt网格布局基础入门 第一次接触Qt网格布局时,我完全被它的灵活性震惊了。想象一下Excel表格,每个单元格可以自由合并拆分,这就是QGridLayout给我的直观感受。作为Qt中最强大的布局管理器之一,它能够将界面元素精准地放置在网格…...
数字后端设计中的Floorplan实战:从基础到优化
1. 数字后端设计中的Floorplan基础概念 第一次接触数字后端设计时,听到"Floorplan"这个词我以为是建筑平面图。后来才发现,芯片设计和建筑设计还真有异曲同工之妙。Floorplan就是芯片设计的"平面布局图",它决定了芯片内部…...
深度解析OpenCore引导器:PC安装macOS的完整实战指南
深度解析OpenCore引导器:PC安装macOS的完整实战指南 【免费下载链接】OpenCore-Install-Guide Repo for the OpenCore Install Guide 项目地址: https://gitcode.com/gh_mirrors/op/OpenCore-Install-Guide OpenCore引导器是当前Hackintosh社区的革命性工具&…...
一道KMP统考真题彻底讲透:nextval与滑动距离的本质寄
一、各自优势和对比 这是检索出来的数据,据说是根据第三方评测与企业数据,三款产品在代码生成质量上各有侧重: 产品 语言优势 场景亮点 核心差异 百度 Comate C核心代码质量第一;Python首生成率达92.3% SQL生成准确率提升35%&…...
