渲染基本图元

上篇文章中,已经介绍了 OpenGL ES 的基础环境搭建,并且实现了设置背景色功能。

在本文中,我们将会在上文的基础上,渲染基本图元,三角形。在这个过程中,将会详细介绍可编程图形渲染管线是如何工作的。

最终的效果如下:

2017013028167QQ20170130-174258@2x.png

OpenGL ES 环境搭建

上篇文章中,已经介绍了 OpenGL ES 的一些基础概念以及大致工作流程。

在本文中,我们将会介绍在 iOS 平台上如何接入 OpenGL ES,并搭建好基础环境,实现设置背景色功能。它是之后任何实战的基础模版。在搭建过程中,会针对之前介绍的一些概念,再结合代码讲解。

PS:这一节是 OpenGL ES 的入门,也是最重要的一部分。再绚丽的特性,都是在此基础上完成的。所以理解它是很有必要的~

设置蓝色背景后,效果如下:

2017012639178QQ20170126-231448@2x.png

OpenGL ES 基础概念

这里主要描述一些 OpenGL ES 必须先了解的一些概念,为之后的实战铺路。

状态机

OpenGL 是一个状态机,它维持自己的状态,并根据用户调用的函数来改变自己的状态。

根据状态的不同,调用同样的函数也可能产生不同的效果。

在 OpenGL 的世界里,大多数元素都可以用状态来描述,比如:

OpenGL ES 开篇

在学习 OpenGL ES 之前,总结下我自己接触 OpenGL ES 时的一些疑惑,我相信这也是初学者都会遇到的一些困惑。

Q & A

Q:OpenGL 是什么 ?

A:OpenGL(Open Graphics Library)是 Khronos Group (一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准)开发维护的一个规范,它是硬件无关的。它主要为我们定义了用来操作图形和图片的一系列函数的 API,需要注意的是 OpenGL 本身并非 API

而 GPU 的硬件开发商则需要提供满足 OpenGL 规范的实现,这些实现通常被称为”驱动“,它们负责将 OpenGL 定义的 API 命令翻译为 GPU 指令。所以你可以用同样的 OpenGL 代码在不同的显卡上跑,因为它们实现了同一套规范,尽管内部实现可能存在差异。

OpenGL ES, 初学者的自我总结

前言:

学习 OpenGL ES 一段时间了,深知这个过程的不容易

尤其是入门,OpenGL 到底好在哪里?什么是渲染管线?什么是状态机?纹理是不是就是图片?深度测试,模版测试又是什么鬼?…

OpenGL 有太多太多的东西需要学习。我最初接触 OpenGL,就是想借助它,实现美图秀秀里的一些功能。然而,不知道看了多少教程,实现了多少个旋转立方体,困惑了多少次,放弃了多少回…

慢慢地,似乎找到了一些门路…

  • 可以导入照片处理并保存了
  • 可以实现简单的滤镜了
  • 可以实现画笔功能了
  • 可以实现马赛克功能了

于是,这系列的文章应运而生。

Core Image 之自定义 Filter~

前言

最近在研究 Core Image 自定义 Filter 相关内容,重新学习了 Core Image,对 Core Image 的一些优化点也有了一定的了解。故此记录,与君交流~

本文主要讲解 Core Image 自定义滤镜部分的内容,包括如何使用自定义 Filter,如何编写 kernel,QC 工具介绍,注意点以及一些开发技巧。

在这之前,我默认你了解 Core Image 的基本原理以及使用方式。如果没有,我建议你花点时间看看我的上一篇文章:Core Image 你需要了解的那些事~,它介绍 Core Image 相关基础概念、使用方式、注意点以及和其他图像处理方案的对比,想必会有所收获。

现在,开始吧~

Core Image 你需要了解的那些事~

前言

最近在研究 Core Image 自定义 Filter 相关内容,重新学习了 Core Image,对 Core Image 的一些优化点也有了一定的了解。故此记录,与君交流~

本文将会介绍逐一介绍 Core Image 相关基础概念、使用方式、注意点以及和其他图像处理方案的对比。也算是下一篇文章: Core Image 自定义 Filter~ 的预备知识,毕竟只有了解了 Core Image 的作用以及它的优势,才有学习自定义 Filter 的动力。

现在,开始吧~

Call Directory Extension 初探

iOS 10中引入了许多令人振奋的新特性,其中 CallKit让我特别感兴趣。这是一个非常重要的 API,继2014年苹果推出 VoIP证书后,这次 VoIP 接口的开放,以及一个全新的 App Extension,简直是VOIP的福音,可见苹果对VOIP的重视。并且,”that enable call blocking and caller identification. You can create an app extension that can associate a phone number with a name or tell the system when a number should be blocked.” 这意味着现在可以通过 Call Directory Extension 来实现电话黑名单功能了。Cool~ 本文简单阐述了如果实现简单的来电黑名单功能。

阅读须知:目前学习的资料也仅限相关 API,另外 API也没有详细的注释,所以本文主要是个人探索所得,如果有什么错误,还望见谅并予以指正。现在,让我们开始吧~

What's New in iOS 10.0 中文版(上)

由于原文篇幅较长,为了方便阅读,分为上下篇。

本文是 What’s New in iOS 10.0 中文版的上篇,主要描述了iOS 10新引入的一些新特效,概括了重要的变化。

在What’s New in iOS 10.0 中文版(下)中,将介绍一些已存在框架的改进以及一些弃用的 API。

原文链接:What’s New in iOS 10.0

这篇文章总结了运行在目前 iOS设备上的 iOS 10中与开发者有关的功能,这篇文章还列出了与这些功能相关的详细文档。