GLsurfaceview、SurfaceView和View的区别

这篇具有很好参考价值的文章主要介绍了GLsurfaceview、SurfaceView和View的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

GLsurfaceview、SurfaceView和View,三个都是画布,展示UI。

View

显示视图,内置画布,提供图形绘制函数、触屏事件、按键事件函数等;必须在UI主线程内更新画面,速度较慢,被动更新画面。

SurfaceView

基于view视图进行拓展的视图类,更适合2D游戏的开发;是view的子类,类似使用双缓机制,在新的线程中更新画面所以刷新界面速度比view快

GLSurfaceView

基于SurfaceView视图再次进行拓展的视图类,专用于3D游戏开发的视图;是SurfaceView的子类,openGL专用

SurfaceView和View最本质的区别在于,surfaceView是在一个新起的单独线程中可以重新绘制画面而View必须在UI的主线程中更新画面
根据不同的时间需求,一般分成两类。
  1 被动更新画面的。这种用view就好了。因为画面的更新是依赖于 onTouch 来更新,可以直接使用 invalidate()。 因为这种情况下,这一次Touch和下一次的Touch需要的时间比较长些,不会产生影响。
  2 主动更新。比如一个人在一直跑动。这就需要一个单独的thread不停的重绘人的状态,避免阻塞main UI thread。所以显然view不合适,需要surfaceView来控制。
  一般2D游戏开发使用SurfaceView足够,因为它也是google专们扩展用于2D游戏开发的画布
  使用普通的游戏画布(Android中2D专用游戏画布)中进行绘制图片,然后在GLSurfaceView(Android中3D游戏专用画布)中渲染图片的对比中发现GLSurfaceView的效率高于SurfaceView的30倍;GLSurfaceView的效率主要是因为机器硬件的GPU加速,现在flash技术也有了GPU加速技术;

总结:

一般2D游戏使用SurfaceView足够,所以不要认为什么都要使用GLSurfaceView(openGL),而且 GLSurfaceView的弊端在于适配能力差,因为很多机型中是没有GPU加速的。

View、SurfaceView、GLSurfaceView总结

view是最基础的,必须在UI主线程内更新画面,速度较慢。
SurfaceView 是view的子类,类似使用双缓机制,在新的线程中更新画面所以刷新界面速度比view快
GLSurfaceView 是SurfaceView的子类,opengl 专用的文章来源地址https://www.toymoban.com/news/detail-514025.html

到了这里,关于GLsurfaceview、SurfaceView和View的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android UI刷新机制与SurfaceView

    举例一个Activity的布局文件和逻辑如下: 当我们点击remove_btn时,会出现SurfaceView所在的区域会出现10s黑块的现象,这个现象在我们平时开发中用到SurafceView时常常遇到,往往在主线程同时存在耗时操作和SurfaceView detach操作的时候出现,那么为什么Surfaceview从parent view上面detach的

    2023年04月08日
    浏览(25)
  • OpenGLES:GLSurfaceView实现Android Camera预览

    前几篇博文对OpenGL做了一些讲解,虽然只是一些基础的知识,但也足够玩出很多有趣的东东了 之前讲过OpenGL本身只是一个开源的图形渲染标准协议,所以OpenGL的学习应注重实战实操,多动手写代码才更有助于巩固所学知识 OpenGLES是OpenGL适配移动端嵌入式设备的版本,裁剪了

    2024年02月04日
    浏览(40)
  • Android GlSurfaceView 入门教程 : 绘制一个三角形

    GlSurfaceView 是 Android 中的一个类,继承自 SurfaceView ,是用于显示 OpenGL ES 图形渲染的一个 View 。 OpenGL ES 是一种跨平台的图形 API ,用于渲染 2D 和 3D 图形,也可以将相机的画面显示到 GlSurfaceView 上,从而实现滤镜的效果。 GlSurfaceView 提供了一个可以在 Android 应用程序中绘制

    2024年02月13日
    浏览(33)
  • OpenGLES:glReadPixels()获取相机GLSurfaceView预览数据并保存

    Android 现行的 Camera API2 机制可以通过 onImageAvailable(ImageReader reader) 回调从底层获取到 Jpeg、Yuv 和 Raw 三种格式的 Image ,然后通过保存 Image 实现拍照功能,但是却并没有 Api 能直接在上层直接拿到预览Surface上的实显数据。 Android Camera 预览的实现是上层下发 Surface 到 CameraHAL ,由

    2024年02月03日
    浏览(26)
  • Util、POJO、domain、entity、model、DAO、DTO、view、mapper、service、controller的作用和区别分析

    @[TOC]Util、POJO、domain、entity、model、DAO、DTO、view、mapper、service、controller的作用和区别分析 前言 做开发项目时,总会遇到这些包,理清他们的层次,非常有助于我们对于项目的理解和建立。 现阶段CSDN上貌似没有很系统,很详细的关于层级类的解释。因此总结了一下自己的经

    2024年02月07日
    浏览(29)
  • Android MediaPlayer+SurfaceView+自定义控制器实现视频播放

    Android提供了多种视频播放的方式,如下: 1、MediaController+VideoView实现方式 这种方式是最简单的实现方式。VideoView继承了SurfaceView同时实现了MediaPlayerControl接口,MediaController则是安卓封装的辅助控制器,带有暂停,播放,停止,进度条等控件。通过VideoView+MediaController可以很轻

    2024年02月04日
    浏览(26)
  • Android 使用OpenCV实现实时人脸识别,并绘制到SurfaceView上

    上篇文章 我们已经通过一个简单的例子,在 Android Studio 中接入了 OpenCV 。 之前我们也 在Visual Studio上,使用OpenCV实现人脸识别 中实现了人脸识别的效果。 接着,我们就可以将 OpenCV 的人脸识别效果移植到 Android 中了。 1.1 环境说明 操作系统 : windows 10 64 位 Android Studio 版本

    2024年02月10日
    浏览(38)
  • Android 使用Camera2 API 和 GLSurfaceView实现相机预览

    GLSurfaceView 和 SurfaceView 是 Android 中用于显示图像的两个视图类,它们在实现方式和使用场景上有一些区别。 实现方式:GLSurfaceView 基于 OpenGL ES 技术实现,可以通过 OpenGL ES 渲染图像。而 SurfaceView 则是通过基于线程的绘制方式,可以在独立的线程中进行绘制操作。 性能:由于

    2024年02月09日
    浏览(36)
  • Android APP OpenGL ES应用(01)GLSurfaceView 2D/3D绘图基础

    OpenGL本身是开放图形库的一种标准,定义了一个跨语言、跨平台的编程规范,主要用于3D图形编程。OpenGLES是OpenGL的裁剪版本,主要是针对嵌入式设备/移动设备 (像手机、游戏机这种等等。。。) 进行裁剪后的库。对于Android设备来说主要是用OpenGL ES。从初学者角度来讲 Ope

    2023年04月20日
    浏览(32)
  • SurfaceView出现ANR:Surface has already been released的解决办法

    项目中有这样一种场景会引起SurfaceView出现ANR,在主Activity中创建并使用SurfaceView,然后不停的进入子ActivityB ,返回主Activity再进入子ActivityB这样循环,就会出现ANR的问题。 我通过查看SurfaceView源码发现了一个坑,其实很多人使用的姿势不对,他们没有出现ANR只是幸运而已。

    2024年02月01日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包