字节流动
-
OpenGL ES 如何渲染 16bit 图像(P010)?
16bit 图像(P010) 前面讨论关于 YUV 图像 NV21、YUYV 等格式的处理,都是 8 bit YUV 格式,即每个 Y、U、V 分量分别占用 8 个 bit (一个…
-
OpenGL ES 3.0 帧缓冲区失效
很多朋友都听说过 glInvalidateFramebuffer(帧缓冲区失效)这个 API ,很多读者私信问过很多次:帧缓冲区失效应该怎么使用?在什么条件下使用?有什么好处? 函…
-
Bokeh 效果性能慢和锯齿问题怎么解决?
一位球友在看过抖音、视频号流行的 Bokeh 效果是怎么实现的? 这篇文章,刚好也在用里面的圆形 Bokeh 效果,但是却遇到了性能和锯齿问题,希望给出一些建议。 性能和锯齿这两个…
-
OpenGL YUV 和 RGB 图像转换出现偏色问题怎么解决?
早上知识星球里的一位同学,遇到 yuv2rgb 偏色问题,这个问题比较典型,今天展开说一下。 省流版 直接贴出来更精确的转换公式: 刨根问底版 理论上,rgb2yuv 和 yuv2…
-
关于 OpenGL 的渲染上下文
OpenGL 上下文 OpenGL 的上下文(OpenGL context)是一个 OpenGL 绘图环境的抽象概念,它包括了所有 OpenGL 状态信息和资源,以便OpenGL能…
-
Camera 和 MediaCodec 对视频旋转角度的处理
Surface 和 GLConsumer 对视频旋转角度的处理 最近遇到一个有趣的问题:通过MediaCodec解码带旋转角度的视频时,如果Output Surface是Textu…
-
你是怎样录制 OpenGL ES 的渲染结果?
我们使用OpenGL ES将摄像头数据绘制至手机屏幕。如果我们需要对图像数据进行了美颜等处 理,这些处理都是在着色器中完成的,那么我们如何从着色器拿到数据然后进行编码生成视频呢? …
-
Android录制视频,软编实现音视频的录制
软编实现音视频录制 前言 之前的硬编我们可以基于 Android 官方提供的 MediaCodec 来实现编码,基本上可以做到一边录制一边编码并封装为MP4文件。 速度肯定是更快的…
-
OpenGL 面试:发光的原理是什么?
内发光原理 内发光原理简单概况是:采样周边像素alpha取平均值叠加效果。概括来说似乎好像特别简单,但需要一定的理解和消化。 发光物体可以当做是一个圆形对象,去采集圆形对象周边像素…
-
OpenGL 学了那么久了,glViewport 你真的会用吗?
OpenGL中的 glViewport 函数用于定义视口(Viewport),即确定窗口中显示的区域。它的定义如下: 参数解释: glViewport函数的作用是将正投影坐标(Op…
-
OpenGL ES Shader 怎样绘制一颗“心”
今天讲一下绘制心形的两种方式,主要是为了扩展一下绘制复杂形状的思路,为后面讲特效做一些简单的铺垫。 心形绘制可以参考 ShaderToy 上的代码:https://www.shad…
-
OpenGL ES 动态贴纸实现
动态贴纸是人脸特效中的一种的效果体现(基于人脸识别SDK)。比如抖音、快手等短视频应用,或者美颜相机、美图秀秀等相机类应用。动态贴纸最常用的是2D,3D贴纸这里不做介绍。 2D贴纸…
-
OpenGL ES 如何使用 AHardwareBuffer 进行渲染
GraphicBuffer 是Android设计的一种高性能 buffer,其具备一些比较优越的特性,如: 这几个特性可以实现的功能有: 但在GraphicBuffer在使用时存在…
-
FFmpeg 实现视频转图片
代码实现视频转图片主要是使用了 FFmpeg 视频编解码相关的知识,所以首先了解下FFmpeg 中的编解码相关函数以及流程,后面再看代码就会比较轻松了。 视频解码 视频编码(保存为…
-
Shader 编程:只用一个函数就能生成三角形、矩形等所有的正多边形
绘制多边形的思路跟画圆的思路一样,圆形可以看做一个有正无穷边的多边形。有了这个思路你就可以明白,我们需要为每条边划分对应的弧度,弧度相同它就是正多边形。 直接上代码: 代码里比较关…
-
Shader 实现彩虹旋涡的4个示例代码
本文分享绘制彩虹漩涡的4个示例代码。 示例代码一 先绘制一个螺旋状的图形 代码效果: 中心点大体在(0.5,0.75)的位置上 示例代码二 代码效果 加入color += sin(…
-
Vulkan中的同步机制,含显示和隐藏的同步控制
在前面的文章中,我们讲解了Vulkan的多线程设计理念,分析了其底层的机制。我们知道在Vulkan的设计中,尽量避免资源的同步竞争,但是在某些复杂场景和多线程优化过程中难免会遇到资…
-
Shader 编程基本图形:圆和曲线
由于主流的 Shader 编程网站,如 ShaderToy, gl-transitions 都是基于 GLSL 开发 Shader ,加上 MSL 和 GLSL 语法上差别不大,后…
-
OpenGL ES 3.0 怎样将着色器程序二进制化
之前有位 VIP 读者提问:C++ 如何将 OpenGL ES 的着色器程序二进制(保存),然后在其他地方加载使用?现在写篇文章介绍下。 将着色器程序二进制化(Shader Pro…
-
OpenGL & Metal Shader 编程:GLSL 重要的内置函数
为啥要单独写一篇讲讲 GLSL 的几个常用内置函数?主要是为了避免新手在 Shader 编程中看到一些关键字,如 ceil,f ract, smoothstep 等一脸懵。 推荐一…