US1L7——必备的图形程序接口概念

计算机图形程序接口

计算机图形程序接口(Graphics API)对于游戏开发程序员来说是非常重要的知识,是学习图形学时必不可少的内容。

计算机图形程序接口是一套可编程的开放标准,不管做2D还是3D游戏都需要这部分的底层API支持。

它本质上是软件,并不是硬件,是前辈们提前为你写好的调用系统硬件(GPU)绘制图形的代码。
我们甚至可以把它简单理解成是显卡厂商定义的一系列的底层的进行图形操作的加速API接口。

由于目前各种游戏引擎的出现,即使你没有系统的学习过图形学相关知识,也能够独立的通过游戏引擎开发游戏
但是你必须知道的是,游戏引擎的一部分本质就是对图形程序接口的封装
游戏引擎通过图形程序接口帮助我们完成了图像渲染相关的工作,我们只需要把工作重心放在游戏逻辑开发上了。

因此,计算机图形程序接口对于游戏开发来说,是非常重要的内容,
即使你现在还没有时间,或者没有需求学习计算机图形学,你也必须对他们有一定的认识。

Unity程序员必了解的图形程序接口

  • OpenGL(Open Graphics Library)

    中文翻译过来是开放图形库,它定义了一个跨平台、跨语言的编程接口规格的专业图形程序接口,
    可以用于3D、2D图形渲染,是一个功能强大、调用方便的底层图形库。
    由于它跨平台、跨语言、出现时间早,因此它的应用极其广泛!

  • OpenGL ES(OpenGL for Embedded Systems)

    中文翻译过来是用于嵌入式系统的开放图形库,它是OpenGL的子级
    主要针对手机、游戏主机等嵌入式设备而设计,免授权费、跨平台、功能完善。
    GLES2.0、GLES3.0 指的就是OpenGL ES这套标准,他们也是Android和IOS手机上常用的图形处理标准。
    Unity在移动平台进行图形渲染处理时,就包含了OpenGL ES方案

  • Vulkan

    “下一代”开放的图形显示API,是与DX12能够匹敌的GPU API标准。
    它有一套最新的图形加速API接口,目标是提供更灵活和丰富的底层操作接口,以替代OpenGL 和 OpenGL ES接口,
    可以把Vulkan看做是OpenGL的升级版,目前新版本的Unity支持使用Vulkan方案

  • Directx(Direct eXtension)

    中文翻译过来是直接拓展,简称DX。它是由微软公司创建的多媒体编程接口。
    不跨平台,只针对微软的相关产品,被广泛使用于Windows操作系统、XBOX游戏主机的图形应用程序开发中。

    其中的D3D算是DX一部分,是对标OpenGL的图形程序接口

  • WebGL(Web Graphics Library)

    中文翻译过来是网页图形库,它是针对Web端( 网页 )的3D绘图协议
    这个标准允许把JavaScript和OpenGL ES 2.0结合在一起,
    网页开发人员可以借助系统显卡在浏览器里流畅的展示3D场景和模型,可以在网页里进行3D图形开发。

  • Metal

    中文翻译过来是金属,它是苹果公司为游戏开发者提供的图形技术,
    该技术能够为3D图像提高10倍渲染性能,但是它不支持跨平台,
    主要针对IOS、macOS苹果自家的操作系统,只有苹果手机、电脑能够使用。

对于我们的意义

了解这些图形程序接口的基本概念对我们有什么意义呢?我们从他们的简单介绍中需要知道,他们主要支持的平台为:

  • Windows电脑:DX、OpenGL、Vulkan
  • 苹果电脑:Metal、OpenGL、Vulkan
  • 安卓手机:OpenGL ES、Vulkan
  • 苹果手机:OpenGL ES、Vulkan、Metal
  • 网站网页:Web GL

如果不通过游戏引擎,我们想要在这些平台上开发游戏,那么就必须要针对不同平台学习对应的图形程序接口相关的知识。
你会发现OpenGL的身影在各主流平台中都占有一席之地,由于它出现早、跨平台、跨语言
所以也是为什么在学习计算机图形学时,OpenGL是必学的内容。

我们现在使用游戏引擎开发游戏,在绝大多数情况下,不需要直接和图形程序接口打交道,
但是我们在Unity当中发布应用程序时经常会看到和他们相关的一些设置,你必须要了解了他们的基本概念,才能清楚我们在设置什么。

因此本篇文章的主要作用就是让你了解他们,并且可以为你指明学习计算机图形学时的一些学习方向。

你还需要知道的是,这些图形程序接口还有不同的版本,比如DX10、DX11、DX12,比如OpenGL ES 2.0、OpenGL ES 3.0。
不同的设备、不同的操作系统他们支持的版本也是不同的
比如我们进行手机游戏开发时,我们可以去查询主流移动设备支持的图形程序接口的版本,来决定在发布时,对于图形程序接口版本的兼容选择。
这样才能保证我们发布的应用程序能够支持更多的移动设备。

总结

对于Unity来说,它针对你发布的不同平台,会进行图形程序接口方案的切换,比如:

  1. 发布Windows应用时,使用DX方案
  2. 发布苹果电脑应用时,使用Metal方案
  3. 发布移动平台应用时,使用OpenGL ES 或 Vulkan方案
  4. 发布网页应用时,使用WebGL方案

我们不需要掌握对应图形程序接口方案的相关知识,也能利用Unity进行游戏开发,
因为引擎已经把图形渲染的核心内容封装起来,不需要我们直接操作他们。
但是长远考虑,随着你的能力提升,计算机图形学还是游戏开发程序员的必学知识,他可以帮助你理解渲染相关的原理,让你升职加薪,走得更远。