Android中的OpenGL怎么配置使用


这篇文章主要介绍“Android中的OpenGL怎么配置使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android中的OpenGL怎么配置使用”文章能帮助大家解决问题。Android 可通过开放图形库 OpenGL ES 来支持高性能 2D 和 3D 图形,OpenGL 是一种跨平台的图形 API,用于为 3D 图形处理硬件指定标准的软件接口。OpenGL ES 是 OpenGL 规范的一种形式,适用于嵌入式设备,Android 支持多版 OpenGL ES API,各版本情况如下:OpenGL ES 1.0 和 1.1 – 此 API 规范受 Android 1.0 及更高版本的支持。OpenGL ES 2.0 – 此 API 规范受 Android 2.2(API 级别 8)及更高版本的支持。OpenGL ES 3.0 – 此 API 规范受 Android 4.3(API 级别 18)及更高版本的支持。OpenGL ES 3.1 – 此 API 规范受 Android 5.0(API 级别 21)及更高版本的支持。在 AndroidManifest.xml 中声明 OpenGL ES 的版本GLSurfaceViewSurfaceViewOpenGL实现,从 Android 1.5 开始加入,在 SurfaceView的基础上添加了 EGL 的管理以及自带的渲染线程 GLThread,其主要功能如下:管理一个Surface,这个Surface是一块特殊的内存,可以组合到 Android 的 View 系统中,也就是可以和View一起使用。管理一个 EGL,这个EGL可以让 OpenGL 渲染到这个Surface上,EGL是 Android 与 OpenGL之间的桥梁。支持用户自定义渲染器Renderer对象。使用专用线程上进行渲免费云主机域名染。支持按需渲染(on-demand)和连续渲染(continuous )。Optionally wraps, traces, and/or error-checks the renderer’s OpenGL calls.EGL 窗口、OpenGL 表面、GL 表面含义都相同。GLSurfaceView常用设置如下:EGLConfigChooser的默认实现是SimpleEGLConfigChooser,默认情况下GLSurfaceView将选择深度缓冲深度至少为 16 位的PixelFormat.RGB_888格式的 surface,默认的EGLConfigChooser实现是SimpleEGLConfigChooser,具体如下:可以通过如下方式修改EGLConfig的默认行为:通过setRenderer设置渲染器并启动渲染线程GLThread,渲染模式有两种如下:RENDERMODE_CONTINUOUSLY:适合重复渲染的场景,默认的渲染模式。RENDERMODE_WHEN_DIRTY:只有Surface被创建后渲染一次,只调用了requestRender才会继续渲染。渲染模式可以通过setRenderMode来进行设置,具体如下:setDebugFlags用于设置 Debug 标记,方便调试跟踪代码,可选值为DEBUG_CHECK_GL_ERRORDEBUG_LOG_GL_CALLSsetGLWrapper可以通过自定义GLWrapper来委托 GL 接口来添加一些自定义行为,具体如下:这部分在前面提到过,这里单独说一下,要想在 GL 表面上执行渲染操作,需要实现Renderer对象完成实际渲染操作,通过如下方式给GLSurfaceView设置渲染器对象Renderer以及制定渲染模式,如下:设置渲染器Renderer的时候,同时会创建独立线程GLThread并开启该线程,这个线程就是独立于 UI 线程的渲染线程。这里就涉及到两个线程 UI 线程和渲染线程,自然涉及到线程之间的通信,可以使用 volatilesynchronized等实现线程之间的通信。如果是在 UI 线程中调用渲染线程中的操作,可以使用GLSurfaceViewqueueEvent 方法来将该操作执行到渲染线程中,一般需要自定义GLSurfaceView的时候会用到,同样如果在渲染线程可以通过runOnUiThread来将与 UI 相关的操作执行到 UI 线程。下面看下渲染器Reander的基本实现:先来了解下 OpenGL 的世界坐标系和与之对应的 Android 上的纹理坐标系,如下图所示:在 Android 中使用 OpenGL 就要进行相应坐标的转换,下面看下 OpenGL 坐标系在 Android 屏幕中的映射关系,如下图所示:如上图所示,左侧是默认的 OpenGL 坐标系,右侧是 OpenGL 坐标系在 Android 屏幕上的映射,可以明显看到图中的三角形是变形了的,为了保证图像比例就需要应用 OpenGL 投影模式和相机视图来转换坐标,这就涉及到投影矩阵和视图矩阵,这部分内容会在后续的文章中介绍。通过以上内容,Android OpenGL 算是初步入门了,按照习惯来个小案例,这里使用 OpenGL 绘制一个三角形,如下Triangle是三角形数据封装及着色器的的使用,后续渲染直接调用draw方法进行渲染绘制,如下:渲染器实现如下:上面都是基本的绘制操作,没啥好说的,其中着色器的使用流程会在后续文章中进行介绍,这里就不贴其他代码了,感兴趣的可以直接在文末查看源代码。上面的绘制没有使用投影矩阵和相机视图来进行坐标转换,当横竖屏切换到时候会到导致变形,这个会在下篇文章中进行修正,看下上述代码绘制的效果图,如下图所示:关于“Android中的OpenGL怎么配置使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注百云主机行业资讯频道,小编每天都会为大家更新不同的知识点。

相关推荐: Python如何安装及建立虚拟环境

这篇“Python如何安装及建立虚拟环境”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python如何安装及建立虚拟环境”文章吧。python安…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 05/16 15:42
下一篇 05/16 15:42

相关推荐