展开

关键词

OpenGL ES for Android 世界

01 前言 大家好,本文是 iOS/Android 音视频专题的第五篇,该专题中 AVPlayer 项目代码将在 Github 进行托管,你可在微信公众号(GeekDev)后台回复资料 获取项目地址。 OpenGL ES 目前支持 iOS、Android、BlackBerry、bada、Linux 和 Windows。 在 Android 中 Context 使用 EGLContext 对象表示。 纹理坐标起始点为(0,0),(0,0) 在纹理图片的左下角,与 Android 屏幕坐标系 y 轴相反,终始于(1,1),即纹理图片的右上角。 往期内容: iOS/Android 音视频开发专题介绍 iOS/Android 音视频概念介绍 MediaCodec/OpenMAX/StageFright 介绍 使用 MediaExtractor 及

10010

OpenGL ES for Android 绘制线

line_vs.glsl和line_fs.glsl分别表示顶点shader和片段shader的文件,存放于assets/glsl目录下,readAssetsTx...

22520
  • 广告
    关闭

    开发者专享福利,1988元优惠券限量发放

    带你体验博客、网盘相册搭建部署、视频渲染、模型训练及语音、文字识别等热门场景。云服务器低至65元/年,GPU15元起

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    OpenGL ES for Android 深度测试

    什么是深度 深度就像是现实世界中物体与我们自己之间的距离,而在OpenGL中,深度是像素点(可以理解为现实世界中的物体)距离相机的距离,深度信息保存在深度缓存中,深度值越大则离相机越远。 深度测试有什么作用 在OpenGL ES中默认是不开启深度测试的,不使用深度测试的时候,先绘制较近的物体,然后绘制较远的物体,当远处的物体和近处的物体出现重叠时导致近处的物体被远处的物体遮挡,这不符合实际的现象 启用深度测试 在OpenGL ES中默认是不开启深度测试的,开启深度测试代码如下: GLES20.glEnable(GLES20.GL_DEPTH_TEST) 在每次绘制(onDrawFrame方法)时先清楚上次的深度缓存和颜色缓存 glDepthFunc方法使用方式如下: GLES20.glDepthFunc(GLES20.GL_LESS) 在 OpenGL ES for Android 绘制立方体 中是典型的深度测试用例,通过这篇文章可以查看开启深度测试和不开启的区别

    44220

    OpenGL ES for Android 相机预览

    权限 Android上打开摄像头需要camera权限,在Android 6.0及以上的版本需要动态申请权限,在`AndroidManifest.xml`中添加camera权限: <manifest xmlns :android="http://schemas.android.com/apk/res/android" package="com.arvr.sample"> <uses-permission android:name="android.permission.CAMERA"/> <application> ...

    37820

    Android OpenGL ES开发初探

    版本 OpenGL ES 有几个版本,对于Android系统API,会有不同的要求。 OpenGL ES版本 Android系统API OpenGL ES 1.0&1.1 Android 1.0 以上 OpenGL ES 2.0 Android 2.2以上 OpenGL ES 3.0 Android 4.3以上 OpenGL ES 3.1 Android 5.0以上 这里考虑到Android系统版本,选择OpenGL ES 2.0会是比较好。 AndroidOpenGL ES基本的类 (1) GLSurfaceView OpenGL ES在Android开发上,是以GLSurfaceView为载体进行展示的(或者可以自己用SurfaceView 三、总结 OpenGL就是一个画图用的库; 在Android上,OpenGL呈现的载体是GLSurfaceView; 使用shader语言去告诉OpenGL你要干嘛(画在什么位置和填充什么颜色或者纹理)

    66190

    OpenGL ES for Android 播放视频

    为什么要使用OpenGL ES播放视频 我们都知道Android中有VideoView控件可以直接播放视频,既简单又实用,那么为什么我们还要用OpenGL ES来播放视频呢? 那是因为使用OpenGL ES可以做更多的酷炫的动效,比如旋转视频、双指缩放视频、视频的截图、视频的录制、直播、换脸,还有类似“激萌”App里面的特效等这些都是VideoView所无法实现的,而通过OpenGL shader中u_Texture是纹理,注意它的类型是samplerExternalOES,并不是sampler2D,sampler2D是2D纹理,用于显示图片,而samplerExternalOES是Android .glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, textures[0]) ,GLES20.glTexParameterf函数的相关参数说明可以参照OpenGL glSurfaceView.renderMode = GLSurfaceView.RENDERMODE_CONTINUOUSLY } ... } 初始化MediaPlayer并播放视频 这里我们使用Android

    56920

    Android中基于OpenGL的特效

    在上一篇中,我们已经展示了Android中,通过OpenGL展示相机预览图片的方法。 这一篇主要展示,如何在预览的图片中,加入一些简单的特效。 特效概述 ? return mEffectFilter.getColorMatrix(); } private void activeProgram() { // 将程序添加到OpenGL ---- 以上就是一个简单的基于OpenGL的动画特效。OpenGL动效的关键在于根据着色器的代码,插入需要变换的变量。

    1.5K20

    Android 11 --Use ANGLE for OpenGL ES

    Android设备上的不同硬件供应商提供了许多OpenGL ES驱动程序。这种多样性导致图形驱动程序质量的变化以及这些驱动程序上行为的不一致。 这也意味着错误修复程序通常不会传播到所有设备,并有助于导致OpenGL ES生态系统的碎片化。 Android 11,ANGLE APK将包含一个配置文件,以按应用启用ANGLE。 同时,从Android 11开始,您可以使用ANGLE运行非核心应用程序以评估性能并确定特定应用程序是否应使用ANGLE。该评估和选择加入选项使开发人员可以逐渐转向ANGLE。 要恢复为本机OpenGL驱动程序,请选择native或default。 Vulkan是OpenGLOpenGL ES的继任者,并且更加高效。ARM日前便公布了一段视频对比了Vulkan API 与OpenGL ES API 在CPU占用率及能效上优劣。

    17810

    Android OpenGL ES(五)-结合相机

    这编文章就是将OpenGl和相机结合到一起。 整体流程理解 ---- ? image.png 将Camera中得到的ImageStream由SurfaceTexture接受,并转换成OpenGL ES纹理。 创建GLSurfaceView。 在OpenGL环境下,用GLSurfaceView.Render将这个纹理绘制出来。 ---- SurfaceTexture 可以从图像流中捕获帧作为OpenGL ES纹理。 直接使用创建的纹理,来创建SurfaceTexture就可以了。 在OpenGL ES 2.0着色器必须使用 #extension GL_OES_EGL_image_external:require 着色器还必须使用samplerExternalOES GLSL采样器类型访问纹理

    1.2K30

    Android OpenGL ES滤镜开发设计

    一、引入 按照正常的Android OpenGL开发,一般只需引入两个“主角”:GLSurfaceView和Renderer。 int height);// Renderer#onSurfaceChanged时调用 void draw();// Renderer#onDrawFrame时调用 } 在这个接口的基础上,按照OpenGL

    68240

    Android OpenGL开发实践 - 基于OpenGL ES 2.0的Android相机实时图片涂鸦实现思路

    这篇文章将给大家讲解如何在Android系统上基于OpenGL ES 2.0来实现相机实时图片涂鸦效果,所涂内容跟随人脸出现、消失、移动、旋转及缩放,在这里,我们假设您: 已经搭建好一个相机框架,能够获得相机的预览图像 基础知识一:OpenGL的坐标系 为方便讲解,以下只讲解二维的情况,在OpenGL使用中,我们主要会涉及到以下三个坐标系: 屏幕坐标系 屏幕坐标系就是我们手机屏幕的坐标系,以像素为单位,左上角是坐标系原点 世界坐标系 它是OpenGL内部的绘图区域的坐标系,x、y的取值范围都是-1~1,坐标原点在绘图区域的中心,见下图,假设绿色区域是一个OpenGL的绘图区域: ? 基础知识二:Shader Shader就是OpenGL的着色器,分为顶点着色器(Vertex Shader)和片元着色器(Fragment Shader),这两个着色器都由一段小程序来实现,用OpenGL 涉及到多个坐标系的转换,一旦某步出错,可能导致最后结果存在很大偏差 Vertext Shader中平移、旋转及缩放代码的编写,本质上是套用变换矩阵 ---- 作者简介:kenneyqin(覃华峥),天天P图Android

    2.8K130

    OpenGL ES for Android 绘制旋转的地球

    计算球体顶点数据 我们知道OpenGL中最基本的图元是三角形,任何复杂的图形都可以分解为一个个的三角形,球体也不例外,假设球体上有“经纬度”,通过“经纬度”将球体分割为一个个的四边形,如下图: ? R.drawable.earth) textureId = GLTools.loadTexture(bitmap) } GLTools.loadTexture为封装的工具类方法,在OpenGL

    55020

    Android平台OpenGL ESAssimpOpenCVGLM集成说明

    Android平台OpenGL ES/Assimp/OpenCV/GLM集成说明 本文代码见: https://github.com/jiangxincode/DroidDemo 集成Assimp 下载 \make_android.bat拷贝为scripts\android_crosscompile\make_android_self_defined.bat 将scripts\android_crosscompile =C:\Users\jiangxin\AppData\Local\Android\Sdk\ndk\22.0.7026061 set ANDROID_CMAKE_PATH=C:\Users\jiangxin %\android.toolchain.cmake ^ -DCMAKE_MAKE_PROGRAM=%ANDROID_NDK_PATH%\prebuilt\windows-x86_64\bin\make.exe ^ -DANDROID_NDK=%ANDROID_NDK_PATH% ^ -DANDROID_NATIVE_API_LEVEL=android-16 ^ -DASSIMP_ANDROID_JNIIOSYSTEM

    42420

    OpenGL ES 2.0 for Android》读书笔记

    这是一本关于OpenGL ES 2.0(以下简称OpenGL)快速入门的书。 本书使用OpenGL2.0完成了一个3D游戏的制作,游戏名叫做Air Hockey,从Android开发环境的搭建到最后游戏的开发完工,作者每一步都讲述的很详实,是一个很好的学习OpenGL的例子。? GL_COMPILE_STATUS, compileStatus, 0); if (LoggerConfig.ON) { // Print the shader info log to the Android programObjectId, GL_LINK_STATUS, linkStatus, 0); if (LoggerConfig.ON) { // Print the program info log to the Android OpenGL-ES-2.0-for-Android 主要看一下下面两个功能: OpenGL_01_Simple_Color 实现最基本的绘制正方形 OpenGL_02_Simple_Texture 实现最基本的加载图片

    3.8K91

    Android OpenGL ES 实现蓝线挑战特效

    和抖音的还是比较吻合,除了蓝线的颜色,笔者的蓝线是纯蓝色的(#0000FF),当然,颜色可以任意调整 特效分析 那么问题来了,这样的特效应该如何实现呢 当笔者第一次看到这个特效的时候,就在想应该如何使用 OpenGL

    38530

    OpenGL-ES-2.0-for-Android 项目介绍

    这是一个OpenGL ES 2.0在Android上的应用实例。包含简单的颜色渲染、纹理渲染、立方体Cube、Assimp模型加载等等。部分功能使用Java编写,另外一部分功能使用C++编写。

    35830

    Android OpenGL 渲染图像读取哪家强?

    glReadPixels glReadPixels 是 OpenGL ES 的 API ,OpenGL ES 2.0 和 3.0 均支持。使用非常方便,下面一行代码即可搞定,但是效率很低。 关于 PBO 的详细使用可以参考文章:OpenGL ES 3.0 开发连载(22):PBO , 这里不再赘述。 ImageReader ImageReader 是 Android SDK 提供的 Java 层对象,其内部会创建一个 Surface 对象。 常用于 Android Camera2.0 相机预览,通过 addTarget 将 Surface 对象作为相机预览图像的输出载体,通过回调接口获取预览图像。 Android 在 Native 层和 Java 层均提供了 HardwareBuffer 实现接口,其中 Native 层叫 AHardwareBuffer 。

    1.7K10

    Android OpenGL ES(三)-平面图形

    上一章Android OpenGL ES(二)-正交投影 的学习,我们已经能够画正常的图片图形了,这章我们会继续来绘制正方形和圆的这样的平面图形和绘制纹理。 二维纹理坐标.png 对比Android系统的Y轴 android系统中的y轴也是向下的。但是纹理坐标是向上的。 纹理的大小 在标准的OpenGL ES 2.0中,纹理不必是正方形。 Android屏幕的Y坐标是向下的和而纹理中的T坐标是向上的,所以表达同一个点的Y坐标和T坐标是相反的! //使用mip贴图来生成纹理,相当于将图片复制到openGL里面? 纹理的基础概念 绘制一个纹理的基本套路 下一章开始,我们会进入Android的相机和OpenGL的结合。 相机部分结束之后,才会到三维图形的部分。

    92930

    OpenGL ES for Android 视频缩放、旋转、平移

    在上一篇文章中我们介绍了使用OpenGL ES 播放视频,在末尾提到如果渲染视频的窗口宽高比和视频宽高比不一致会导致视频拉伸,这篇文章将会介绍如何通过视频的缩放来解决这个问题。 我们在OpenGL ES 播放视频的基础进行修改,修改顶点shader attribute vec4 a_Position; attribute vec2 a_TexCoordinate; varying ) } GLES20.glUniformMatrix4fv(mvpMatrixLoc, 1, false, modelMatrix, 0)为矩阵数据设置,其他已经在OpenGL

    1.1K20

    OpenGL ES for Android 绘制立方体

    a_Position为顶点数据,a_color为顶点颜色数据,v_color为varying变量,传递给我片段shader使用。

    39710

    相关产品

    • 直播 SDK

      直播 SDK

      直播 SDK 是腾讯云直播服务在移动场景的延伸,集成了腾讯云直播的推 / 拉流、主播观众互动连麦、主播跨房 PK 等能力,提供包括 iOS、Android、小程序、Web 等多种接入方式,为您提供针对移动场景的高质量直播服务,快速满足手机直播的需求。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券