zoukankan      html  css  js  c++  java
  • Android显示YUV图像

    需要流畅显示YUV图像需要使用Opengl库调用GPU资源,网上在这部分的资料很少。实际上Android已经为我们提供了相关的Opengl方法

    主体过程如下:

    1、建立GLSurfaceView

    2、建立Render

    4、设置GLSurfaceView的Render为你创建的Render,并设置RenderMode为RENDERMODE_WHEN_DIRTY

    3、把数据推入Render

    而在Render中需要实现3个方法

    1、void onSurfaceCreated(GL10 gl, EGLConfig config)

    2、void onDrawFrame(GL10 gl)

    3、void onSurfaceChanged(GL10 gl, int width, int height)  

      onSurfaceCreated需要一些初始化工作,括号内是具体方法:

    生成Textures的ID(glGenTextures)->绑定需要操作的Texture(glBindTexture)->设置相关参数(glTexParameterf)->操作下一个Texture....

    ->建立Shader(glCreateShader)->导入Shader代码字符串(glShaderSource)->编译Shader(glCompileShader)->检查编译状态(glGetShaderiv)->下一个Shader....

    ->建立Program(glCreateProgram)->绑定Shader(glAttachShader)->绑定属性(glBindAttribLocation)->链接Program(glLinkProgram)->检查Program链接状态(glGetProgramiv)

    ->取得attribute变量、uniform变量的句柄->告诉Opengl在rendering的时候使用这个Program(glUseProgram)

      onDrawFrame在视图刷新的时候会被使用

    绑定需要操作的Texture(glBindTexture)->设置Texture内容(glTexImage2D)->操作下一个Texture....

    清缓存->指定顶点属性数组(glVertexAttribPointer)->使能顶点数组(glEnableVertexAttribArray)

    ->激活Opengl的Texture(glActiveTexture)->绑定需要操作的Texture(glBindTexture)->设置纹理单元的一致变量(glUniform1i)->操作下一个Texture....

    绘图!!!!(glDrawArrays)

    在将数据准备完成的时候,使用requestRender()就会调用onDrawFrame

  • 相关阅读:
    net.sf.ezmorph.bean.MorphDynaBean cannot be cast to java.util.Map
    oracle 导入excel
    【长文干货】浅析分布式系统
    35 个 Java 代码性能优化总结
    阿里巴巴Java开发手册-命名规约
    阿里巴巴Java开发手册-集合处理
    阿里巴巴Java开发手册-并发处理
    [NOI2016]国王饮水记
    python学习(二十一) Python 中的链式赋值
    python学习(二十) Python 中的比较:is 与 ==
  • 原文地址:https://www.cnblogs.com/superping/p/3385409.html
Copyright © 2011-2022 走看看