从0开始学游戏开发
蔡能
原网易游戏引擎架构师,资深游戏底层技术专家
立即订阅
5827 人已学习
课程目录
已完结 41 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 跟我学,你也可以开发一款游戏!
免费
第一章:游戏开发基础知识 (5讲)
第1讲 | 游戏开发需要了解哪些背景知识?
第2讲 | 2D游戏和3D游戏有什么区别?
第3讲 | 游戏的发动机:游戏引擎
第4讲 | 底层绘图接口的妙用
第5讲 | 构建游戏场景的武器:地图编辑器
第二章:客户端开发 (10讲)
第6讲 | 从0开始整理开发流程
第7讲 | 如何建立一个Windows窗体?
第8讲 | 如何区分图形和图像?
第9讲 | 如何绘制游戏背景?
第11讲 | 如何载入“飞机”和“敌人”?
第12讲 | 如何设置图像的前后遮挡?
第14讲 | 如何设置精灵的变形、放大和缩小?
第15讲 | 如何设置淡入淡出和碰撞检测?
第17讲 | 如何制作游戏资源包和保存机制?
第18讲 | 如何载入背景音乐和音效?
第三章:UI和键盘鼠标 (3讲)
第20讲 | 如何在游戏中载入UI和菜单?
第21讲 | 如何用鼠标和键盘来操作游戏?
第23讲 | 如何判断客户端的网络连接?
第四章:脚本语言 (3讲)
第24讲 | 如何嵌入脚本语言?
第26讲 | 脚本语言在游戏开发中有哪些应用?
第27讲 | 如何使用脚本语言编写周边工具?
第五章:服务器端开发 (6讲)
第29讲 | 如何选择合适的开发语言?
第30讲 | 如何定制合适的开发协议?
第32讲 | 不可忽视的多线程及并发问题
第33讲 | 如何判断心跳包是否离线?
第35讲 | 如何用网关服务器进行负载均衡?
第36讲 | 如何制作游戏内容保存和缓存处理?
第六章:热点剖析 (9讲)
第10讲 | 热点剖析(一):HTML5技术是如何取代Flash的?
第13讲 | 热点剖析(二):如何选择一款HTML5引擎?
第16讲 | 热点剖析(三):试试看,你也可以编写一款HTML5小游戏!
第19讲 | 热点剖析(四):安卓端和苹果端游戏开发有什么区别?
第22讲 | 热点剖析(五):如何选择移动端的游戏引擎?
第25讲 | 热点剖析(六):AR和人工智能在游戏领域有哪些应用?
第28讲 | 热点剖析(七):谈谈微信小游戏的成功点
第31讲 | 热点剖析(八):谈谈移动游戏的未来发展
第34讲 | 热点剖析(九):谈谈独立开发者的未来发展
加餐 (3讲)
复习课 | 带你梳理客户端开发的三个重点
课后阅读 | 游戏开发工程师学习路径(上)
课后阅读 | 游戏开发工程师学习路径(下)
结束语 (1讲)
结束语 | 做游戏的过程就像是在雕琢一件艺术品
从0开始学游戏开发
登录|注册

第4讲 | 底层绘图接口的妙用

蔡能 2018-06-02
上一节,我给你介绍了游戏引擎的概念及其在游戏开发中所起的作用。同时,我也提到了游戏引擎背后的工作方式。在代码层面,游戏引擎是一套对底层绘图、音频、操作系统接口的封装实现。
在此基础上,我还举了一个在游戏屏幕上画线条的例子。在这个例子中,画线的接口函数在背后分解、组合、计算,并将绘制工作交给底层绘图接口。这个绘图接口,就是今天要讲的内容。

几种常见的绘图接口

前面我已经说过,我会针对 2D 游戏来讲解游戏开发的流程和细节,所以,这里我先介绍几种 2D绘图接口(即 API,全称 Application Programming Interface)。我选择了 5 种 Windows 下最流行的绘图接口,分别讲解。

1.OpenGL

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

2.DirectX

说起 DirectX,这个名字已经如雷贯耳。DirectX 的开发初衷,是为了让游戏开发者能像在 DOS 平台编写游戏一样,在当时新的 Windows 95 平台上,也能一样高效、快速地操纵各种硬件设备。
其实,在 DirectX 发布之前,微软已经将 OpenGL 包含在 Windows 系统里面。随着时间的推移,OpenGL 逐渐成为了行业标准,而 DirectX 自然免不了与其展开竞争。
这里,我主要介绍一下 DirectX 中的两个核心组件。这两个核心组件的功能与 2D 游戏编程息息相关,你一定得了解一下。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0开始学游戏开发》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(24)

  • 立春
    其中一行代码应该是 window=SDL_CreateWindow…而且我习惯bool 类型的赋值false或true。代码中一开始初始化为0,之后又为true,不是非常统一,当然这不是重点。
    2018-06-02
    10
  • 小侠
    底层接口只能做简单游戏,游戏引擎在底层接口基础上做封装和扩展,方便做复杂游戏
    2018-06-02
    5
  • Lu | SSEINFO
    游戏引擎应该相当于一层封装,把SDL的方法封装了一个更高的抽象层。就好比网络编程,我们可以直接用socket,也可以使用封装好了的网络库,来简化我们的代码。
    2018-06-02
    3
  • 王建
    绘图接口只是游戏引擎的一个子集
    2018-06-22
    2
  • 以往
    游戏引擎还是需要的

    SDL是对硬件的使用做了封装,但复杂功能的实现还是要借助于引擎提供的一系列组件去完成
    2018-06-02
    2
  • DeathKnightH
    除开图形以外的输入输出,如音频输出,键盘、鼠标输入等。如果这些都不考虑从底层写起的话还是需要引擎的支持。
    2018-06-04
    1
  • GeekAmI
    应该还是需要的,毕竟引擎不仅对图形接口进行了封装,还对音视频、操作系统底层进行抽象封装,更加方便开发者调用。是不是应该lib下呢?
    2018-06-02
    1
  • 代码编译不过,可能需要在#include SDL.h之前加上一行宏定义#define SDL_MAIN_HANDLED
    2018-06-02
    1
  • pat
    还需要游戏引擎,因为绘图接口只能绘制图像,没有声音、鼠标键盘、AI等,游戏引擎应该在绘图接口上层,封装绘图接口吧?
    2018-06-02
    1
  • 火腿
    OpenGL是不是最流行的图形接口?
    2019-11-17
  • Ishmael
    引擎要进行封装底层api,以及解决跨平台支持的问题。
    2019-06-10
  • 火腿
    现在游戏开发的最流行API是不是DirectX?

    作者回复: 你如果指的电脑平台,是的

    2019-01-16
  • hardcoreYutian
    sdl那个网站怎么也进不去,不知道怎么办了
    2018-10-04
  • 匹诺曹
    本节课介绍了5种图形接口,opengl,directx,sdl,gdi,gdi+,以及如何不使用引擎直接用绘图接口编写游戏的方法。

    游戏引擎的主要部分就是封装了图形接口,更加容易使用,便于开发。

    pygame 就是对 sdl 的封装
    2018-08-28
  • code-artist
    请问老师,现在的游戏引擎一般基于什么绘图接口做的? OpenGl? DirectX? SDL?还是GDI+?
    2018-08-20
  • 放羊大王
    没怎么写过c佳佳,用 clion cmake 报的错误看不懂。Google 了也没找到解决方案,xcode就一次过了,一样的代码。很惆怅。
    2018-06-17
  • aaaaa
    ide是什么,idea编辑器吗?

    作者回复: ide为集成开发环境,不是指的idea编辑器。

    2018-06-14
  • third
    复杂的就需要游戏引擎
    2018-06-10
  • 月空繁星
    GDI接口是不是对directX的二次封装?两者之间是否有关系?

    作者回复: 不是,DX中DDraw会有一部分功能调用gdi,但GDI并不是对DX的封装。

    2018-06-04
  • 王小白白白
    游戏引擎封装绘图接口 加上音频 控制操作等
    2018-06-04
收起评论
24
返回
顶部