当前位置: 首页 > news >正文

宿迁手机网站建设公司全国网页设计大赛品牌榜中榜

宿迁手机网站建设公司,全国网页设计大赛品牌榜中榜,广东建设信息网粤建通,wordpress 添加图片如果要使用OpenGl来自定义相机#xff0c;EGL还是需要了解下的。 可能大多数开发者使用过OpengGL但是不知道EGL是什么#xff1f;EGL的作用是什么#xff1f;这其实一点都不奇怪#xff0c;因为Android中的GlSurfaceView已经将EGL环境都给配置好了#xff0c;你一直在使用…如果要使用OpenGl来自定义相机EGL还是需要了解下的。 可能大多数开发者使用过OpengGL但是不知道EGL是什么EGL的作用是什么这其实一点都不奇怪因为Android中的GlSurfaceView已经将EGL环境都给配置好了你一直在使用只是不知道他的存在罢了。 很多人可能在使用OpenGl ES渲染数据的时候都带着一个疑问渲染的数据到底到哪里去了没看到画布Android中的自定义view不都是有画布的吗 EGL就是底层OpenGL绘制图形的画布。请见EGL和OpenGl ES的关系介绍。 一、EGL简介 1、了解EGL是什么 EGL是什么EGL全称Embedded Graphic Library。EGL是渲染API(如OpenGL, OpenGL ES, OpenVG)和本地窗口系统之间的接口。它处理图形上下文管理表面/缓冲区创建绑定和渲染同步并使用其他Khronos API实现高性能加速混合模式2D和3D渲染OpenGL / OpenGL ES渲染客户端API OpenVG渲染客户端API原生平台窗口系统。这个稍微了解下就OK你只要知道它是一个用来给OpenGl ES提供绘制界面的接口就可以了。 EGL的作用 与设备的原生窗口系统通信。查询绘图表面的可用类型和配置。创建绘图表面。在OpenGL ES 和其他图形渲染API之间同步渲染。管理纹理贴图等渲染资源。 2、EGL和OpenGl ES的关系 1从上面的讲解我们基本上可以知道EGL是为OpenGl提供绘制表面的。 对的这就是OpenGl ES数据渲染画布所在了。想必到这里大家也清楚了渲染数据去处的问题了。 EGL还有什么用呢EGL可以理解为OpenGl ES ES和设备之间的桥梁。完全可以这么理解。 2 OpenGL 是跨平台的、专业的图形编程接口而接口的实现是由厂商来完成的。 OpenGL使用这些接口绘制完成后需要把数据渲染到屏幕上就需要EGL来接手这部分工作。 EGL是 OpenGL ES 和底层 Native 平台 视窗系统之间的接口如下图所示。 (3)有一个类比的例子 我们来思考一下画家绘画的过程首先要有一名懂得各种绘画技艺的画家然后他需要一张画布一些笔一些颜料一些辅助工具尺、模板、橡皮、调色板等等然后他在画布上绘制第一幅画完成之后展示给人们看在人们观赏第一幅画的时候他可以在第二张画布上绘制第二幅画绘制完成后收回第一幅画将第二幅画展现给人们看接着使用工具擦除第一幅画在同一张画布上绘制第三幅画周而复始人们便看到了一幅接一幅的画。 对比 OpenGL ES/EGL各要素的对应关系大体如下 画家编程人员笔、颜料、辅助工具OpenGL ES API画布EGL 创建的 Surface 所以计算机绘画的本质就是选择图像显示的像素格式申请一块内存画布填充像素颜色绘制完成之后通知计算机显示到屏幕上按比例发射RGB光最终就看到了所绘制的画面。之所以要先选择像素格式是因为无论是所申请内存的大小还是硬件驱动解析这块内存的方式都是由像素格式决定的。   3、EGL包括哪些内容 EGL接口中含有3个对象如下图所示 简单讲解下各部分的作用 Display(EGLDisplay) 是对实际显示设备的抽象。SurfaceEGLSurface是对用来存储图像的内存区FrameBuffer 的抽象,包括Color Buffer,Stencil Buffer,Depth Buffer。Context (EGLContext) 存储 OpenGL ES绘图的一些状态信息。 二、EGL使用步骤 1、创建EGLDisplay得到默认的显示设备(窗口) 首先我们需要知道绘制内容的目标在哪里EGLDisplayer是一个封装系统屏幕的数据类型通常通过eglGetDisplay方法来返回EGLDisplay作为OpenGl ES的渲染目标eglGetDisplay() mEgl EGLContext.getEGL() as EGL10 //get Display device mEGLDisplay mEgl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY) 2、初始化显示设备 第一参数代表Major版本第二个代表Minor版本。如果不关心版本号传0或者null就可以了。初始化与 EGLDisplay 之间的连接eglInitialize() mEgl.eglInitialize(mEGLDisplay, version) 3、配置显示设备的属性确定渲染表面的配置信息 mEgl.eglChooseConfig(mEGLDisplay,attribList,configs,configs.size,numConfigs) 4、创建OpenGL上下文环境EGLContext实例 注OpenGL的任何一条指令都必须再自己的OpenGL上下文环境中进行。 mEgl.eglCreateContext(mEGLDisplay,config,EGL10.EGL_NO_CONTEXT,contextList ) eglCreateContext中的第三个参数可以传入一个EGLContext类型的变量该变量的意义是可以与正在创建的上下文环境共享OpenGl资源包括纹理ID,FrameBuffer以及其他Buffer资源。如果没有的话可以填写Null. 5、创建渲染表面EGLSurface 通过上面四步,获取OpenGl 上下文之后说明EGL和OpenGl ES端的环境已经搭建完毕也就是说OpengGl的输出我们可以获取到了OpenGL的绘制数据我们可以获取到了接下来就是如何显示这些数据到显示设备上。下面的步骤我们讲如何将EGl和设备屏幕连接起来。如果连接呢当然这时候我们就要使用EGLSurface了,我们通过EGL库提供eglCreateWindowSurface可以创建一个实际可以显示的surface.当然如果需要离线的surface我们可以通过eglCreatePbufferSurface创建。其中eglCreateWindowSurface()用于创建屏幕上渲染区域eglCreatePbufferSurface用于创建屏幕外渲染区域。 private EGLSurface mSurface EGL14.EGL_NO_SURFACE; mEGLSurface mEgl.eglCreateWindowSurface(mEGLDisplay,mEGLConfig,mSurface,attribList ) 6、绑定三者Display 显示设备surface渲染表面context上下文环境 通过上面的步骤EGL的准备工作做好了一方面我们为OpenGl ES渲染提供了目标及上下文环境可以接收到OpenGl ES渲染出来的纹理另一方面我们连接好了设备显示屏这里指SurfaceView或者TextureView,接下来我们讲解如何在创建好的EGL环境下工作的。首先我们有一点必须要明确OpenGl ES 的渲染必须新开一个线程并为该线程绑定显示设备及上下文环境Context。因为前面有说过OpenGl指令必须要在其上下文环境中才能执行。所以我们首先要通过 eglMakeCurrent()方法来绑定该线程的显示设备及上下文。 通过eglMakeCurrent方法将EGLSurfaceEGLContextEGLDisplay绑定成功之后OpenGL ES环境就搭建好了接下来便可以渲染了。 mEgl.eglMakeCurrent(mEGLDisplay, mEGLSurface, mEGLSurface, mEGLContext)7、交换缓冲 绑定完成之后就可以进行RenderLoop循环了。这里简单说一下EGL的工作模式是双缓冲模式其内部有两个FrameBuffer(帧缓冲区可以理解为一个图像存储区域)当EGL将一个FrameBuffer显示到屏幕上的时候另一个FrameBuffer就在后台等待OpenGl ES进行渲染输出。直到调用了eglSwapBuffers这条指令的时候才会把前台的FrameBuffers和后台的FrameBuffer进行交换这样界面呈现的就是OpenGl ES刚刚渲染的结构了。即切换 front buffer 和 back buffer 送显。 屏幕外的渲染不需要调用此方法。 mEgl.eglSwapBuffers(mEGLDisplay, mEGLSurface) 如何进行渲染显示未完待续。。。 8、释放EGL环境 当然在所有的操作都执行完之后我们要销毁资源。特别注意销毁资源必须在当前线程中进行不然会报错。首先取消eglMakeCurrent的绑定销毁三个对象EGLSurfaceEGLContext和EGLDisplay即销毁显示设备EGLSurface,然后销毁上下文EGLContext,停止并释放线程最后终止与EGLDisplay之间的链接。 mEgl.eglMakeCurrent(mEGLDisplay, EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_SURFACE,EGL10.EGL_NO_CONTEXT ) mEgl.eglDestroySurface(mEGLDisplay, mEGLSurface)//销毁EGLSurface mEgl.eglDestroyContext(mEGLDisplay, mEGLContext)//销毁上下文EGLContext mEgl.eglTerminate(mEGLDisplay)//终止与EGLDisplay的连接 mEGLDisplay EGL10.EGL_NO_DISPLAY mEGLContext EGL10.EGL_NO_CONTEXT mEGLSurface EGL10.EGL_NO_SURFACE参考链接 Android 系统图形栈一 OpenGL ES 和 EGL 介绍_android图栈-CSDN博客 Android笔记OpenGL ES与EGL的关系与实例_egl的surface是在gpu-CSDN博客 你还不知道 OpenGL ES 和 EGL 的关系_glumes的技术博客_51CTO博客Android OpenGL 开发—— EGL详解 - 掘金
http://www.pierceye.com/news/276782/

相关文章:

  • 开发网站培训班网站详情页用cdr做可以吗
  • 相亲网站开发与设计报告广州网站维护
  • 门户网站 技术方案北京感染人数最新消息
  • 网站制作过程流程酷家乐在线设计官网
  • 六年级做网站的软件小程序开发文档微信小程序
  • 做网站要准备哪些汕头建站公司模板
  • 杭州多语言网站建设网站转app工具
  • 一流的网站建设wordpress 读者墙
  • php 视频播放网站开发php做直播类型的网站
  • 网站建设氺金手指排名11wordpress手机端菜单
  • 存储网站建设软件界面设计图
  • 微信 公司网站 怎么做WordPress安装在Windows
  • 商丘给企业做网站的公司已备案域名租用
  • .net商城网站模板下载网站开发怎么对接客户
  • php程序员网站开发域名企业备案对网站的好处
  • 沈阳市城乡建设网站wordpress全文
  • 冉冉科技网站建设网络教学平台网址
  • 深圳网站设计建设公司宁波易通建设网站
  • 许昌网站建设公司网站的空间和域名
  • 公司查询网站查询系统wordpress简书主题
  • 公司网站 钓鱼网站ui设计交付物都包含哪些
  • seo网站导航建设技巧精东影视传媒文化管理公司
  • 做白酒的网站怎么查网站建设是哪家公司
  • 网站域名密码免费网站推广产品
  • 网站建设一般要多少费用申请网站官网
  • 金融网站织梦模板二手车网站建设
  • 怎么自己写代码做网站做网站必须用域名吗
  • 重庆营销网站建设平台怎么添加wordpress模板
  • 网站赚取广告费深圳个人外贸网站建
  • 在线销售型的网站巢湖城市建设投资有限公司网站