OpenGL ES

openGLES(一)

点点圈 提交于 2021-02-18 04:19:33
准备工作 工具安装 jdk安装 sdk安装 IDE开发环境 一个手机 推荐使用真机,它可以反映真实的性能和结果。 虚拟机创建 Android SDK 执行SDK Manager.exe Tools--> Manage AVDS new GLSurfaceView 他是一个特殊的类初始化OpenGL,可以处理OpenGLES的基本操作,,渲染器可以在一个称为surface的里面完成。渲染是在一个“surface”的特定区域中完成的,也就是视口。 它可以轻松的管理声明周期。 GLSurfaceView是没有动画和特效的。可以使用TextView,TextView可以通过GLSurfaceView转换.或者直接使用TextView。 回顾声明周期 create:创建 destroy:销毁 pause:暂停 resume:回来继续。 创建程序 1.创建一个项目 2.初始化OpenGL 使用一个特殊的类GKSurfaceView进行初始化,他会初始化比较基本的操作 GLSurfaceView类也可以使用activity的生命周期方法。 public class MainActivity extends Activity { @Override protected void onCreate( Bundle savedInstanceState) { super. onCreate(

VS2015+ Opengles 2.0 和opengles 3.0、VS2015 + opengl 环境配置

无人久伴 提交于 2021-02-18 04:03:01
VS2015 + opengl 详见网址: https://blog.csdn.net/so_geili/article/details/51685005 https://blog.csdn.net/niukaoying6674/article/details/79915808 使用时需要添加依赖项如图: VS2015 + opengles 3.0 详见网址: https://blog.csdn.net/dardgen2015/article/details/51563914 VS2015 + opengles 2.0 详见网址: https://blog.csdn.net/linshuhe1/article/details/51064322、https://blog.csdn.net/u013015629/article/details/66475507 简单拷贝备用: 下载AMD的OpenGL ES2.0的模拟器,下载地址: http://www.opengles-book.com/ESEmulator.2009-04-28-v1.4.APRIL_2009_RELEASE.msi 下载《OpenGL ES2.0 Programming guide》里的例子代码,下载地址: http://www.opengles-book.com/OpenGL_ES_Programming

疫情让“灵活用工”浮出水面,作为Android开发的你“灵活用工”了吗?

血红的双手。 提交于 2021-01-30 09:44:52
缘起 2020年,许多企业在接受业绩严重受损的同时,还要承受巨大的人力成本压力。正当所有企业主们焦虑和恐慌的时候,因疫情下多企业探索的灵活用工却有“逆势增长”的趋向。 首先是选择灵活用工的企业越来越多了,特别是软件开发、创意设计、文案策划、新媒体运营等需求量。 ##【移动开发灵活用工适应的场合】 共享新经济模式下:音视频直播、微信小程序、跨平台开发、App外包、等。 这里我归类了如下几类: 1、 应用层开发 ,不限于各种产品,主要还是Android原生开发,主要是各种性能优化。 2、 嵌入式开发 ,不限于各种开发板子,物联网,智能家居,车联网/车载 3、 安全开发 ,不限于各种反逆向,反汇编,寻找安全漏洞 4、 音视频开发 ,不限于直播、点播、音视频通话、音视频会议,短视频等 5、插件化、组件化、热修复开发,不限于自研和使用开源框架集成开发 6、 系统开发(Android) ,不限于Rom维护和FrameWork层定制需求 7、 图形图像开发 ,不限于OpenGL ES,EGL,GLSurfaceView,滤镜,美颜 8、 小程序 / 快应用 应用层开发 Android原生开发,需要重点关注的依然主要是各种性能优化,启动速度,耗电量,流畅度,网络优化再到大厂项目实战,这些都是作为一名优秀Android开发具备的基本素养。 启动速度 流畅度 抖音在APK包大小资源优化的实践

让 Flutter 在鸿蒙系统上跑起来

送分小仙女□ 提交于 2021-01-26 07:17:00
鸿蒙系统 (HarmonyOS)是华为推出的一款分布式操作系统,那么如何在保证开发迭代效率的前提下,以相对低的成本将移动应用快速移植到鸿蒙平台上呢?美团外卖 MTFlutter 团队近期做了一次技术探索,成功地实现了 Flutter 对于鸿蒙系统的原生支持。 前言 鸿蒙系统 ( HarmonyOS )是华为推出的一款面向未来、面向全场景的分布式操作系统。在传统单设备系统能力的基础上,鸿蒙提出了基于同一套系统能力、适配多种终端形态的分布式理念。自 2020 年 9 月 HarmonyOS 2.0 发布以来,华为加快了鸿蒙系统大规模落地的步伐,预计 2021 年底,鸿蒙系统会覆盖包括手机、平板、智能穿戴、智慧屏、车机在内的数亿台终端设备。对移动应用而言, 新的系统理念、新的交互形式 ,也意味着新的机遇 。如果能够利用好鸿蒙的开发生态及其特性能力,可以让应用覆盖更多的交互场景和设备类型,从而带来新的增长点。 与面临的机遇相比,适配鸿蒙系统带来的挑战同样巨大。当前手机端,尽管鸿蒙系统仍然支持安卓 APK 安装及运行,但长期来看,华为势必会抛弃 AOSP,逐步发展出自己的生态,这意味着现有安卓应用在鸿蒙设备上将会逐渐变成“二等公民”。然而,如果在 iOS 及 Android 之外再重新开发和维护一套鸿蒙应用,在如今业界越来越注重开发迭代效率的环境下,所带来的开发成本也是难以估量的。因此

FFmpeg 播放器视频渲染优化

梦想与她 提交于 2021-01-14 06:24:23
前文中,我们已经利用 FFmpeg + OpenGLES + OpenSLES 实现了一个多媒体播放器 ,本文将在视频渲染方面对播放器进行优化。 视频渲染优化 视频渲染优化 前文中,我们都是将解码的视频帧通过 swscale 库转换为 RGBA 格式,然后在送给 OpenGL 渲染,而视频帧通常的格式是 YUV420P/YUV420SP ,所以大部分情况下都需要 swscale 进行格式转换。 当视频尺寸比较大时,再用 swscale 进行格式转化的话,就会存在性能瓶颈,所以本文将 YUV 到 RGBA 的格式转换放到 shader 里,用 GPU 来实现格式转换,提升渲染效率。 YUV 转 RGB 本文视频渲染优化,实质上是对 OpenGLRender 视频渲染器进行改进,使其支持 YUV420P 、 NV21 以及 NV12 这些常用格式图像的渲染。 我们在前文 一文掌握 YUV 的图像的基本处理 中知道, YUV420P 格式的图像在内存中有 3 个平面,YUV420SP (NV21、NV12)格式的图像在内存中有 2 个平面,而 RGBA 格式的图像只有一个平面。 YUV420P 有 3 个平面 YUV420SP 有 2 个平面 所以,OpenGLRender 视频渲染器要兼容 YUV420P、 YUV420SP 以及 RGBA 格式,需要创建 3 个纹理存储待渲染的数据

ShareREC for iOS录屏原理解析

南楼画角 提交于 2021-01-13 03:52:13
文 / 游族网络Mob云平台iOS开发专家 李永超 众所周知,由于iOS系统的封闭性,也出于保护用户隐私的角度,苹果并没有公开的API供开发者调用,来录制屏幕内容。导致许多游戏或者应用没有办法直接通过调用系统API的方式提供录制功能,用户也无法将自己一些玩游戏的过程录制下来分享到其他玩家。基于此,ShareREC应运而生。下面我们从说一下ShareREC的录屏的实现原理。 由于苹果UI是基于不同的引擎渲染,所以目前针对不同的引擎,主要是采用以下几种不同的方式实现: 原生UI。 主要是指UIKit框架下面的UI,即苹果原生UI。其实现方式主要是通过获取当前显示的layer,然后通过Core Graphics将这个layer绘制成UIImage,然后将UIImage拼接成视频。这种做法有个问题,就是每一帧都需要使用Core Graphics来重绘,会造成CPU占用率暴涨,效率非常低。 OpenGL 。 由于 Unity 3D 或 Cocos2d两种引擎,在iOS设备上都是采用OpenGL ES这个底层库实现渲染,所以后面会将两者放在OpenGL中一起讨论。 Metal。 Metal是苹果推出的专门针对iPhone和iPad中GPU编程高度优化的框架。目前Unity 5已经支持64位iOS Metal技术,导出Xcode项目时,可以进行选择

UE4虚幻引擎开发手机游戏

╄→гoц情女王★ 提交于 2021-01-09 20:50:51
该文章来自用户转载 点击阅读原文 UE4虚幻引擎作为游戏开发引擎之一,在很多项目中都会使用到。下面就给大家分享下如何使用UE4开发高品质的手机游戏。 作者介绍 大纲 •介绍 •UE4 针对3A级手游的渲染管线和特征集 •使用ES3.1, Vulkan, Metal Api的高端机图形处理讲解 •即将发布的UE4移动平台特性 介绍 当前市场上使用UE4开发手游的情况 •有许多已经发布的和正在使用UE4开发的手游, 品质相当高 •开放世界的MMO已经可以在手机上流畅运行 2016年发布的高品质游戏《天堂II 革命》 天堂II 革命 •移动平台的开放世界MMO •拉高移动平台品质(Sad。。。) •巨大的成功(月流水1.76亿美元) 天堂II 革命 Netmarble Games(网石游戏)使用标准的UE4特性进行该游戏的开发 •开发, 测试和调试都在PC上完成 •UE4 移动 渲染器 •移动HDR, 后处理 •无缝地图 •LevelStreaming(UE4的关卡组织方式,不翻译了) •材质 •使用BP(蓝图)制作的UI •扩充性良好的设备适配 •最低配置:GalaxyS4,Iphone5 UE4 移动平台渲染器 UE4渲染器 UE4拥有3个不同的渲染器 •延时渲染器(DeferredRenderer) •编辑器, PC和主机的默认渲染器 •需求SM4, SM5 特性集

RK3399开发板,ARM Cortex-A72架构

人盡茶涼 提交于 2020-11-24 14:31:00
产品简介 GR3399卡片电脑是基于瑞芯微(ROCKCHIP)的RK3399( 六核64位)芯片的产品平台。GR3399卡片电脑采用国内优秀芯片厂商瑞芯微(ROCKCHIP)的六核64位“服务器级”处理器RK3399;RK3399使用了双“服务器级”核Cortex-A72 + 四核Cortex-A53的大小架构,主频高达2.0GHz,新的内核相比以前的A15/A17/A57核心设计可以提供高达100%的性能提升。 集成ARM Mali-T860 MP4图形处理器,支持OpenGL ES1.1/2.0/3.0/3.1,OpenVG1.1,OpenCL,Directx11,AFBC(帧缓冲压缩),如此强大的GPU可以应用到计算机视觉、机器学习、4K 3D渲染等许多实际应用中,更能支持H.265 HEVC和VP9、H.265编码,4K HDR。 拥有双MIPI-CSI接口和双ISP,PCIe,USB3.0,USB2.0,TypeC等丰富接口。 GR3399卡片电脑除了采用性能强大的RK3399外,还配备了2GB/4GB DDR3,8GB/16GB/32GB eMMC高速存储器,独立的电源管理系统,强大的网络扩展能力,丰富的显示接口,支持Android7.1,linux,debian等操作系统,性能和体验得到极致的发挥。GR3399卡片电脑PCB 采用 8 层沉金工艺设计

OpenGL学习随笔(三)-- OpenGL ES 2.0渲染管线

别来无恙 提交于 2020-11-24 13:36:24
OpenGL ES的主要作用是将3D的场景显示到2D的屏幕上,在图形学中,这个过程通过一系列的渲染管线完成。OpenGL ES API就是用来向各个阶段提供一些数据和状态指令,一使渲染管线能够按照要求正确地将物体绘制在屏幕上。 OpenGL ES 2.0实现了可编程的图形管线,比起1.x的固定管线要复杂和灵活很多,由两部分规范组成:Opengl es 2.0 API规范和OpenGL ES着色语言规范。下图是OpenGL ES 2.0渲染管线,阴影部分是OpenGL ES 2.0的可编程阶段。 左边的客户端程序通过调用Open GL接口,将定点。着色器程序、纹理,以及其他GL状态参数传入右边的GL服务端,然后在客户端调用绘制命令(如DrawArray),GL便会对输入的元素逐一执行渲染的每个阶段,然后调用每个像素的颜色值写入帧缓冲区(Framebuffer)中,最后视图系统就可以将帧缓冲区的颜色值显示在屏幕上了。此外,应用程序也可以从帧缓冲区中将数据读取到客户端。 图中Vertex Shader和Fragment Shader 是可编程管线; A、Vertex Array/Buffer objects(顶点数值) 顶点数据来源,这时渲染管线的顶点输入,通常使用 Buffer objects效率更好。 B、Vertex Shader(顶点着色器) 顶点着色器通过矩阵变换位置

[OpenGL ES] 正交投影

我只是一个虾纸丫 提交于 2020-11-24 12:26:45
在OpenGL中就需要用到矩形来改变顶点坐标的范围,最后再归一化就可以了。 顶点着色器中添加矩阵 vertex_shader_m.glsl attribute vec4 v_Position; attribute vec2 f_Position; varying vec2 ft_Position; uniform mat4 u_Matrix; void main() { ft_Position = f_Position; gl_Position = v_Position * u_Matrix; } 然后根据图形宽高和屏幕宽高计算(?)的长度 orthoM(float[] m, int mOffset, float left, float right, float bottom, float top, float near, float far) Matrix.orthoM(matrix, 0, -width / ((height / 702f * 526f)), width / ((height / 702f * 526f)), -1f, 1f, -1f, 1f); Matrix.orthoM(matrix, 0, -1, 1, - height / ((width / 526f * 702f)), height / ((width / 526f * 702f)), -1f, 1f