游戏开发中——底层绘图接口的作用

    从代码层面来讲,游戏引擎是一套对底层绘图、音频、操作系统接口的封装实现。

    要实现游戏屏幕上画线条的时候,画线的接口函数在背后分解、组合、计算,并将绘制工作交给底层绘图接口

几种常见的绘图接口

     5 种 Windows 下最流行的 2D绘图接口(即API,全称Application Programming Interface)。

- OpenGL

     OpenGL 是老牌的图形图像接口。GL 是 Graphics Library 的缩写。OpenGL 就是开放图形接口。和的 DirectX 一样,OpenGL 也可以创建和渲染 2D、3D 图形。但是,和 DirectX 不同的是,它可以在多种平台下运行,比如 Windows、Linux、macOS 和部分 UNIX,而 DirectX 只能在 Windows 生态下运行。
     OpenGL 本身只提供图形渲染接口,如果需要别的功能,比如音频、鼠标、键盘的操作,甚至是创建一个窗体,都需要别的扩展库支持。

- DirectX

    DirectX 的开发初衷,是为了让游戏开发者能像在 DOS 平台编写游戏一样,在当时新的 Windows 95 平台上,也能一样高效、快速地操纵各种硬件设备。但是,在 DirectX 发布之前,微软已经将 OpenGL 包含在 Windows 系统里面。随着时间的推移,OpenGL 逐渐成为了行业标准。
     与 2D 游戏编程息息相关的DirectX 中的两个核心组件。
1. DirectDraw
    是早期 DirectX 中掌管 2D 部分的组件。DirectDraw 类似 GDI,支持显存位图,而不是只能将位图存放在内存里,所以 DirectDraw 更贴近硬件。在 DirectX 7 版本之后,DirectDraw 被合并到 Direct Graphics 组件中。
2. Direct2D
    微软推出的最新 2D 组件,它的出现是为了取代 Windows 下的 GDI、GDI+ 和 DirectDraw。Direct2D 能通过硬件加速来绘制 2D 图形,也支持高质量 2D 图形渲染,比如支持 ClearType 呈现的方式、除锯齿、几何位图的绘制和填充等等。

- SDL

    SDL (Simple DirectMedia Layer),就是简单的直接媒体层。SDL 并不算是“独立的”图形渲染接口,因为它将各类操作系统的图形图像渲染接口进行了封装,包装成统一的函数,以此来方便调用。比如,在 Windows 下,它封装了 DirectX 和 GDI+;在 Linux 下,它封装了 Xlib 等等。同时,它也提供了 OpenGL 的调用函数。
     SDL 可以对现有图形图像接口进行封装,它也提供 SDL 官方自己发布的编程接口。比如,SDL_image、图像接口、SDL_net、网络接口等等。 Pygame,就是调用 SDL 编写的。
     Pygame 是使用 Python 封装的游戏库,可以很方便地利用 Pygame 进行 2D 游戏的编写,它的背后,调用的就是 SDL 的接口。

- GDI

     GDI(Graphics Device Interface)是 Windows 下的图形设备接口。它所做的就是处理 Windows 程序的图形输出,负责在 Windows 系统和绘图程序之间进行信息的交换。从编程的方便性和硬件加速等功能来看,GDI 被 GDI+ 取代。

- GDI+

    GDI+ 其实就是 GDI 的进阶版本。
    GDI+ 是有硬件加速功能的,而 GDI 没有;GDI 是以 C 语言接口的形式提供的,而 GDI+ 则是 C++ 和托管类的形式提供;从接口代码的层次上说,GDI+ 对程序员更友好,使用起来也更顺手。
    GDI+ 还提供了图像处理的接口,比如提供了 Image、Bitmap 等类,可以用于读取、保存、显示,操作各种类型的图像,比如 BMP、JPG、GIF 等。
    GDI 和 GDI+ 的绘图操作也存在差别。GDI 中存在一个称为“当前坐标”(MoveTo)的位置。“当前坐标”的存在是为了提高绘画的效率。

    绘图接口绘图接口其实就是使用 C/C++ 语言或汇编语言,通过操作系统的底层,调用诸如显卡、内存这些绘图设备,最后做成接口。

猜你喜欢

转载自blog.csdn.net/xiaokunzhang/article/details/80641595