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

模板网站建设哪家好怎么查询网站后台地址

模板网站建设哪家好,怎么查询网站后台地址,网站建设会用什么软件有哪些,网页制作教程简明SurfaceView 与 GLSurfaceView 的关系 在 Android 开发中#xff0c;SurfaceView 和 GLSurfaceView 是实现自定义渲染效果的关键组件。它们提供了不同的渲染方式#xff0c;适用于不同的应用场景。我们将通过以下几个方面详细说明 SurfaceView 和 GLSurfaceView 的特点及实现…SurfaceView 与 GLSurfaceView 的关系 在 Android 开发中SurfaceView 和 GLSurfaceView 是实现自定义渲染效果的关键组件。它们提供了不同的渲染方式适用于不同的应用场景。我们将通过以下几个方面详细说明 SurfaceView 和 GLSurfaceView 的特点及实现原理并结合 GLSurfaceView 的源码进行深入分析。 1. 概述 SurfaceView提供一个独立的绘制表面 (Surface)用于在子线程中渲染图像。它适用于需要高频率更新画面的应用场景如视频播放、相机预览等。 GLSurfaceView继承自 SurfaceView封装了 OpenGL 的渲染环境为应用提供了更简便的 OpenGL 渲染接口。适用于图形密集的应用场景如 3D 游戏或数据可视化。 2. SurfaceView 的实现与原理 2.1 工作原理 SurfaceView 的核心在于提供了一个独立的 Surface即在独立于主线程的后台线程上绘制内容。SurfaceView 通过 SurfaceHolder 来管理 Surface 的生命周期确保绘制与 UI 更新分离提高渲染效率。 2.2 SurfaceHolder 机制 SurfaceView 使用 SurfaceHolder 管理 Surface 的创建、销毁和变化主要方法包括 SurfaceHolder.Callback监听 Surface 的生命周期变化。lockCanvas() 和 unlockCanvasAndPost()锁定画布进行绘制解锁画布并提交绘制结果。 2.3 示例代码 class MySurfaceView(context: Context) : SurfaceView(context), SurfaceHolder.Callback {init {holder.addCallback(this)}override fun surfaceCreated(holder: SurfaceHolder) {val canvas holder.lockCanvas()// 在canvas上绘制holder.unlockCanvasAndPost(canvas)}override fun surfaceChanged(holder: SurfaceHolder, format: Int, width: Int, height: Int) {// Surface 改变时调用}override fun surfaceDestroyed(holder: SurfaceHolder) {// Surface 销毁时调用} }3. GLSurfaceView 的实现与源码解析 GLSurfaceView 是 SurfaceView 的子类旨在为 OpenGL 渲染提供支持。GLSurfaceView 封装了 OpenGL 的初始化、渲染线程管理等简化了开发流程。通过 GLSurfaceView开发者可以更轻松地将 OpenGL 绘图代码与 Android 的渲染机制结合。 3.1 核心类分析 GLSurfaceView提供了 GLSurfaceView.Renderer 接口用于实现自定义的 OpenGL 渲染逻辑。主要方法包括 onSurfaceCreated()、onDrawFrame() 和 onSurfaceChanged()。GLThread负责管理 OpenGL 的渲染线程。GLThread 保持 OpenGL 上下文确保渲染工作在独立线程中完成避免阻塞主线程。 3.2 GLSurfaceView 源码分析 在 GLSurfaceView 中setRenderer() 会启动一个 GLThread 线程调用开发者自定义的 Renderer 方法。GLThread 使用 OpenGL API 进行绘图同时将绘制操作与 UI 线程分离。 public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback {// 1. 初始化渲染器public void setRenderer(Renderer renderer) {checkRenderThreadState();mRenderer renderer;mGLThread new GLThread(mThisWeakRef);mGLThread.start(); // 启动GLThread线程}// 2. GLThread渲染线程private static class GLThread extends Thread {private WeakReferenceGLSurfaceView mGLSurfaceViewWeakRef;GLThread(WeakReferenceGLSurfaceView glSurfaceViewWeakRef) {mGLSurfaceViewWeakRef glSurfaceViewWeakRef;}Overridepublic void run() {// 渲染主循环while (true) {// 执行 OpenGL 绘制if (glSurfaceView.mRenderer ! null) {glSurfaceView.mRenderer.onDrawFrame(gl);}}}} }3.3 Renderer 接口方法 onSurfaceCreated()在创建 OpenGL 表面时调用用于初始化 OpenGL 环境。onSurfaceChanged()当视图大小或形状改变时调用用于适应新的显示区域。onDrawFrame()在每一帧绘制时调用实际的绘图逻辑写在此方法中。 class MyGLRenderer : GLSurfaceView.Renderer {override fun onSurfaceCreated(gl: GL10?, config: EGLConfig?) {// 初始化OpenGL相关资源}override fun onDrawFrame(gl: GL10?) {// 绘制每一帧}override fun onSurfaceChanged(gl: GL10?, width: Int, height: Int) {// 更新视图大小GLES20.glViewport(0, 0, width, height)} }4. SurfaceView 与 GLSurfaceView 的区别 特性SurfaceViewGLSurfaceView渲染技术CanvasOpenGL渲染线程可在自定义线程中渲染自动管理 OpenGL 渲染线程应用场景视频播放、相机预览3D 游戏、图形密集的应用渲染接口lockCanvas() 和 unlockCanvasAndPost()Renderer 接口提供 onDrawFrame() 等方法 5. 总结 SurfaceView 和 GLSurfaceView 是 Android 中用于自定义渲染的重要组件适用于不同的应用场景。SurfaceView 提供了在独立线程上绘制内容的机制而 GLSurfaceView 则为 OpenGL 渲染进行了更高层次的封装使得图形密集型应用的开发更加便捷。 在实际开发中选择 SurfaceView 还是 GLSurfaceView 主要取决于渲染需求如果应用需要大量的 3D 图形渲染或频繁更新的图像内容GLSurfaceView 是更优选择。 参考 http://labs.beatcraft.com/ja/index.php?Android%20%A4%C7%20OpenGL%20ES%20%20%A4%F2%BB%C8%CD%D1%A4%B9%A4%EB
http://www.dnsts.com.cn/news/81536.html

相关文章:

  • 网站建设目的是什么不能访问子目录的网站
  • 如何在网站上做评比文山北京网站建设
  • 工信部网站备案规定教做甜品的网站
  • 网站设计方案定制怎么创建免费的个人网站
  • 小米商城的网站建站网站空间在线解压
  • 网站开发毕业设计中期汇报表wordpress美化版
  • python做网站好处网站权重优化方式
  • 自己的电脑做服务区 网站wordpress主题拖拽
  • 佛山专业做网站公司哪家好单页网站模板
  • 做羞羞的事情网站凡科网域名续费
  • 网站参考页面设计优化方案数学必修二答案
  • 网站建设讲解材料WordPress魔方格子
  • 怎么建设一个优秀的网站西安公司
  • 在线黑科技网站中国工商做年报网站
  • 电影订票网站开发如何制作网页代码
  • 个旧建设局信息公开门户网站详情页设计制作
  • 个人网站建设心得体会龙华和龙岗哪个繁华
  • 合肥 电子商务 网站建设网站建设前端工具
  • 餐饮公司做网站好处西安企业网站seo
  • 营销型网站建设设计如何查网站备案号
  • 坪地网站建设效果南通网站开发价格
  • 晋城市公用事业建设局网站cn域名续费多少钱一年
  • 电子商务网站建设维护实训报告feed wordpress
  • 非遗网站建设目的厦门网站关键词优化
  • 物流网站建设策划书上海opencart网站建设
  • 常熟网站建设icp备案系统开发板价格
  • 网站建设服务费税率多少淘宝官方网站登录页面
  • 开发一个网站平台多少钱人力资源外包灵活用工
  • 网站搭建实训总结哈尔滨建设厅官方网站
  • 国外儿童社区网站模板湖南微网站营销