主页

OpenGL ES 2.0 —— 渲染管线与着色器

一. 渲染管线

渲染管线也被称之为渲染流水线, 是指一系列的绘制过程, 通过渲染管线处理后可以得到一帧图形

  • 渲染管线由 GPU 内部 处理图形信号 的 并行处理单元组成, 越高端的 GPU, 其内部的并行处理单元数量越多

流程

ES 2.0 渲染管线如下图所示

渲染管线流程

阅读更多

OpenGL ES 2.0 —— 概览

一. 什么是 OpenGL ES

OpenGL 是一种应用程序的编程接口, 它是一种可以对图像硬件设备进行访问的软件库

OpenGL ES(OpenGL for Embedded Systems) 是 OpenGL 三维图形 API 的子集, 针对手机游戏主机等嵌入式设备而设计, 用于支持高性能的 2D 和 3D 图形渲染

阅读更多

Android NDK —— Libyuv 编译与使用

前言

在 Android 系统上, Camera 输出的图像一般为 NV21(YUV420SP 系列) 格式, 当我们想进行录像处理时, 会面临两个问题

问题 1

图像的旋转问题

  • 后置镜头: 需要旋转 90°
  • 前置镜头: 需要旋转 270° 然后再进行镜像处理

问题 2

处理好镜头的旋转后, 当我们尝试使用 MediaCodec 进行 H.264 的硬编时, 便会发现偏色的问题

阅读更多

Android Native 异常捕获

前言

Native 崩溃的捕获, 一直是一个比较令人头疼的问题, 即使是开发阶段的 Native 崩溃也是非常的难以定位, 这里的解决方案是使用 google 的 Breakpad

一. 捕获 Native 异常

想要捕获 Native 异常, 我们需要编译 google 提供的 breakpad 库, 这个库中有 android 运行时库 liblog.so 的依赖, 因此在 Android Studio 中直接编译是最好的选择

阅读更多

MVVM 架构演进 —— 架构的搭建

前言

学习了 MVVM 的 Demo, 翻阅了 DataBinding 的实现源码, 让我们对 MVVM 框架有了一个整体上的了解, 用一句话来概括就是, MVVM 即通过 DataBinding 来解除 Presenter 与 View 依赖的 MVP 架构, 这样的 Presenter 称之为 ViewModel

不过 Demo 中的示例, 真实放到项目中, 会发现很多应用场景使用起来非常的困难, 甚至会让我们觉得没有 MVP 好用, 这篇文章记录了笔者在 MVP 向 MVVM 演进过程中的所见所想, 希望对看到这篇文章的人有所帮助

一. 设计要点

MVVM 架构的搭建核心重点是为了解决 View 与 ViewModel 的通信问题

阅读更多

MVVM 架构演进 —— DataBinding 实现原理

前言

我们知道 DataBinding 在 MVVM 架构中起到了不可或缺的作用, 它是削弱 View 层与 ViewModel 之间耦合的重中之重, 那么它是如何做到当数据变更时便能够直接推送到 View 中的呢?

我们带着这个问题去探索一下 DataBinding 的工作流程.

阅读更多