技术文章
-
OpenGL ES 如何绘制贝塞尔曲线
最近要求为图像设计流线型曲线边框,想着可以用 OpenGL 绘制贝塞尔曲线,再加上模板测试来实现,趁机尝试一波。 基于贝塞尔曲线的曲边扇形 什么是贝塞尔曲线 运用贝塞尔曲线设计的汽…
-
SDL 消息循环和事件响应【音视频基础学习】
在前面的文章中已经创建了一个 SDL 窗口并且显示指定的颜色。 为了让窗口显示出来,在程序中写了一个死循环,这几行代码就是 SDL 消息循环和事件响应的核心缩影了。 SDL 消息循…
-
SDL 如何创建窗口并显示颜色【音视频基础学习】
在前面的文章什么是SDL? SDL安装及工程配置中我们已经完成了 SDL 的工程配置,接下来就是 SDL 相关功能的开发。 本篇文章主要是创建一个应用程序窗口并显示。 创建 SDL…
-
Android NDK CMake开发
Android Studio 从 2.2 版本起开始支持 CMake ,可以通过 CMake 和 NDK 将 C/C++ 代码编译成底层的库,然后再配合 Gradle 的编译将库打…
-
什么是SDL? SDL安装及工程配置
SDL 是 “Simple DirectMedia Layer” 的缩写,它是一个跨平台的多媒体库,可以在 Mac、Windows、Linux 以及更多的系统上运行。 SDL 提供…
-
零基础读懂视频播放器控制原理: ffplay 播放器源代码分析
视频播放器原理其实大抵相同,都是对音视频帧序列的控制。只是一些播放器在音视频同步上可能做了更为复杂的帧预测技术,来保证音频和视频有更好的同步性。 ffplay 是 FFMpeg 自…
-
Android FFmpeg + MediaCodec 实现视频硬解码
本文将利用 FFmpeg+ MediaCodec 做一个播放器,实现视频的硬解码和音视频同步等功能。 MediaCodec 介绍 MediaCodec 是 Android 提供的用…
-
OpenGL ES 实现多种“马赛克滤镜”效果
“⻢赛克效果”就是把图⽚的⼀个相当⼤⼩的区域⽤同⼀个点的颜⾊来表示,可以认为是⼤规模的降低图像的分辨率,⽽让图像的⼀些细节隐藏起来。 无马赛克滤镜 “无滤镜”效果的实现准备工作的代…
-
你还不知道 OpenGL ES 和 EGL 的关系?
什么是 EGL EGL 是 OpenGL ES 和本地窗口系统(Native Window System)之间的通信接口,它的主要作用: 与设备的原生窗口系统通信; 查询绘图表面的…
-
OpenGL ES 3.0 FBO 离屏渲染
什么是 FBO FBO(Frame Buffer Object)即帧缓冲区对象,实际上是一个可添加缓冲区的容器,可以为其添加纹理或渲染缓冲区对象(RBO)。 FBO 本身不能用于渲…
-
OpenGL ES 3D 变换:模型,视图,投影与 Viewport
前言 本来打算直接写教程 04 的,但是想到3D 变换涉及的数学知识较多,往往是很多初学者的拦路虎(比如我自己)。 再加上OpenGL ES 2.0 不再提供 OpenGL ES …
-
给 Android WebRTC 增加美颜滤镜功能
视频采集渲染流程分析 在增加滤镜功能之前,需要对 WebRTC 视频采集的流程有一定了解。 WebRTC 中定义了 VideoCapture 接口类,其中定义了相机的初始化,预览,…
-
OpenGL ES 相机 LUT 滤镜
OpenGLES 相机 LUT 滤镜 左侧为 LUT 滤镜效果,右侧为原图 什么是 LUT ? LUT 是 Look Up Table 的简称,称作颜色查找表,是一种针对色彩空间的…
-
OpenGL ES 实现全景视频播放器
OpenGL ES学习实战(360全景视频播放器) 全景视频原理 一、拍摄设备 全景视频在拍摄时是多个摄像机同时在一个点向四面八方拍摄。下面在网上找了一个拍摄设备的图片。 摄像机 …
-
OpenGL ES 3.0 的 Transform Feedback 怎么用?
什么是 Transform Feedback Transform Feedback(变换反馈)是在 OpenGLES3.0 渲染管线中,顶点处理阶段结束之后,图元装配和光栅化之前的…
-
OpenGL ES 3D 模型的加载和渲染
OpenGL ES 3D 模型加载和渲染 3D 模型渲染 上一节简单介绍了常用的 3D 模型文件 Obj 的数据结构和模型加载库 Assimp 的编译,本节主要介绍如何使用 Ass…
-
OpenGL ES + MediaPlayer 渲染播放视频+滤镜效果
之前曾经写过用SurfaceView,TextureView+MediaPlayer 播放视频,和 ffmpeg avi 解码后SurfaceView播放视频 ,今天再给大家来一…
-
Android屏幕刷新机制—VSync、Choreographer 全面理解!
一、背景和疑问在Android中,当我们谈到 布局优化、卡顿优化 时,通常都知道 需要减少布局层级、减少主线程耗时操作,这样可以减少丢帧。如果丢帧比较严重,那么界面可能会有明显的卡…
-
OpenGL ES 如何传输一个超大数组给着色器程序
如何传输一个超大数组给着色器程序? 在 OpenGL ES 图形图像处理中,会经常遇到一种情况:如何将一个超大的数组传给着色器程序? 目前常用的有三种方式: 使用将数组加载到 2D…
-
Android 图形绘制的 6 种方式
图形绘制概述 Android平台提供丰富的官方控件给开发者实现界面UI开发,但在实际业务中经常会遇到各种各样的定制化需求,这必须由开发者通过自绘控件的方式来实现。通常Android…