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

淮滨网站建设公司微网站建设流程

淮滨网站建设公司,微网站建设流程,公司网站后台,上海口碑最好的家装这篇文章开始正式进入 OpenGL ES 的世界,来学习使用 GLSurfaceView。 1. GLSurfaceView 介绍 GLSurfaceView 从 Android 1.5 (API level 3) 开始加入,继承自 SurfaceView,实现了 SurfaceHolder.Callback2 接口,拥有SurfaceView 的…

这篇文章开始正式进入 OpenGL ES 的世界,来学习使用 GLSurfaceView。

 

1. GLSurfaceView 介绍

GLSurfaceView 从 Android 1.5 (API level 3) 开始加入,继承自 SurfaceView,实现了 SurfaceHolder.Callback2 接口,拥有SurfaceView 的全部特性,也有 view 所有的功能和属性,特别是处理事件的能力,它主要是在 SurfaceView 的基础上它加入了 EGL 的管理,并自带了一个 GLThread 绘制线程(EGLContext 创建 GL 环境所在线程即为 GL 线程),绘制的工作直接通过 OpenGL 在绘制线程进行,不会阻塞主线程,绘制的结果输出到 SurfaceView 所提供的 Surface 上,这使得GLSurfaceView 也拥有了 OpenGL ES 所提供的图形处理能力,通过它定义的 Render 接口,使更改具体的 Render 的行为非常灵活性,只需要将实现了渲染函数的 Renderer 的实现类设置给 GLSurfaceView 即可。

GLSurfaceView 提供了下列特性:

  • 1. 提供并且管理一个独立的 Surface。
  • 2. 提供并且管理一个 EGL display,它能让 OpenGL 把内容渲染到上述的 Surface 上。
  • 3. 支持用户自定义渲染器 (Render),通过 setRenderer 设置一个自定义的 Renderer。
  • 4. 让渲染器在独立的 GLThread 线程里运作,和 UI 线程分离。
  • 5. 支持按需渲染 (on-demand) 和连续渲染 (continuous) 两种模式。
  • 6. GPU 加速:GLSurfaceView 的效率是 SurfaceView 的 30 倍以上,SurfaceView 使用画布进行绘制,GLSurfaceView 利用GPU 加速提高了绘制效率。
  • 7. View 的绘制 onDraw(Canvas canvas) 使用 Skia 渲染引擎渲染,而 GLSurfaceView 的渲染器 Renderer 的onDrawFrame(GL10 gl) 使用 OpenGL 绘制引擎进行渲染。

 

 

2. GLSurfaceView 使用步骤

(1) 在使用 OpenGL ES 前,需要在 AndroidManifest.xml 中设置 OpenGL ES 的版本

这里我使用的是 OpenGL ES 2.0,因此可进行如下声明:

  <uses-feature android:glEsVersion="0x00020000" android:required="true" />

(2) GLSurfaceView 布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_height="match_parent"android:layout_width="match_parent"><android.opengl.GLSurfaceViewandroid:id="@+id/glsurfaceview"android:layout_width="match_parent"android:layout_height="match_parent" />
</android.support.constraint.ConstraintLayout>

(3) 初始化 GLSurfaceView

GLSurfaceView 默认情况下已经初始化好了 OpenGL ES 的运行环境,不需要做额外的工作就可以使用(当然你也可以设置一些参数) 

public final class GLSurfaceViewActivity extends AppCompatActivity {private GLSurfaceView glSurfaceView;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_glsurfaceview);glSurfaceView = findViewById(R.id.glsurfaceview);// GLContext 设置 OpenGLES2.0glSurfaceView.setEGLContextClientVersion(2);}@Overrideprotected void onResume() {super.onResume();glSurfaceView.onResume();}@Overrideprotected void onPause() {super.onPause();glSurfaceView.onPause();}
}

(4) 设置 Renderer

渲染是 OpenGL ES 的核心工作,setRenderer 可以将用户自定义的一个 Renderer 加入实际的渲染流程中。

        // 设置 rendererglSurfaceView.setRenderer(new GLRenderer());// 渲染方式,RENDERMODE_WHEN_DIRTY 表示被动渲染,只有在调用 requestRender 或者 onResume 等方法时才会进行渲染。// RENDERMODE_CONTINUOUSLY 表示持续渲染glSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
final class GLRenderer implements Renderer {@Overridepublic void onSurfaceCreated(GL10 gl, EGLConfig config) {// 关闭抗抖动gl.glDisable(GL10.GL_DITHER);// 设置系统对透视进行修正gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);gl.glClearColor(0, 0, 0, 0);}@Overridepublic void onSurfaceChanged(GL10 gl, int width, int height) {// 渲染窗口大小发生改变或者屏幕方法发生变化时候回调GLES20.glViewport(0, 0, width, height);}@Overridepublic void onDrawFrame(GL10 gl) {// 执行渲染工作GLES20.glClearColor(GLES20.GL_COLOR_BUFFER_BIT, 0f, 0f, 0f);}
}

这就给 GLSurfaceView 渲染一层黑色背景:


 

下一篇文章将来学习 GLSurfaceView 中 3D 绘图的基本概念与实践。

http://www.yayakq.cn/news/12348/

相关文章:

  • 句容市建设工程管理处网站推广app收益排行榜
  • 深圳php网站建设网址查询工具
  • 南昌教育网站建设做网站主色调选择
  • 嘉兴网站个人博客主页登录
  • 购物网站设计的意义金融公司网站模板
  • 专业建站源码动力网页设计制作公司
  • 做教育网站销售的好吗做网站盐城
  • 免费自助站制作在线该模板尚未授权此网站
  • 网站推广员需要做什么做违法网站程序员犯法吗
  • 做中学网站不死鸟分享友情链接
  • 网站基础建设ppt软件开发项目预算
  • 网站流量如何赚钱网站的二次开发
  • 做一个中英文网站多少钱wordpress 招聘模块
  • 郑州网站外包公司什么网站用php做的
  • 舞台灯光网站建设公司网页设计就业方向
  • 贵阳网站建设建站解决方案网站维护的注意事项
  • 优惠网站建设php网站开发实用技术练习题
  • 广西备案工信部网站阿里巴巴做网站吗
  • 商务网站建设教学视频wordpress按颜色搜索
  • 网站描述 修改室内在线设计平台
  • 技术支持 淄博网站建设家在深圳光明
  • 整站seo公司免费申请自己的网站
  • 家居网站关键词怎么做佛山做网站3lue
  • 网站开发最合适的搭配极致cms怎么样
  • 07年做网站网站怎么建设在哪里接单
  • 惠州网站建设技术托管wordpress后台500
  • app开发公司广州英诺seo的作用主要有
  • 三站合一网站建设方案做机械设备的做哪个网站推广较好
  • 深圳网站制作hi0755公司网站建设多少费用济南兴田德润团队怎么样
  • 网站做提示框百度怎么做广告