最近想写个 2D 游戏的引擎,我有很多问号。请问下如何入门基础 OpenGL, 以及不久的未来是不是 vulkan 会取代 OpenGL,想找个起点,我想明天开始补些知识

2021-08-31 18:50:37 +08:00
 ChrisFreeMan

你们都是我大哥

4338 次点击
所在节点    游戏开发
24 条回复
GeruzoniAnsasu
2021-09-01 04:03:07 +08:00
………… CPU 渲染器是什么鬼提案

他们都被 opengl 吸引了,忘记了这是个 XY Problem
而且 2D 游戏怎么还能扯到 PBR 的


其实游戏引擎(尤其是 2D )跟图形 API 关系没那么紧密
2D 引擎不知道你考虑的功能有哪些,切图、变换、物理、对象管理?
如果你想写的真的是 2D 引擎,那么考虑问题的顺序应该是 top-down 的,先计划最终能达到什么效果,然后再把每一层的抽象定好,然后在往抽象出来的框架里塞代码。

比如假设我的目标是,没有引擎 UI,用代码来创建对象,没有 UI 系统,没有预设物理,那么我可能至少需要下面这些东西:

- 事件循环(渲染和计算至少要异步化对吧)
- 输入管理器(「游戏操作」和「物理输入」的映射,比如组合键)
- sprite (对象)管理器(切图、对象关系和变换、shader 或材质、包围盒、碰撞检测……)
- 动画管理器(图片组、动画混合)
- 渲染器

每个组件都有很多工作要做,因此强烈建议参考成熟引擎的代码结构,你能一目了然地从文件名就看出需要做什么:
https://github.com/cocos2d/cocos2d-x/tree/v4/cocos/2d

具体到你提到的 opengl/图形 API 上,如果你是自顶而下考虑的,自然会想在渲染器和图形 API 之间抽多一个虚拟层,让引擎本身诸如创建 texture,应用 shader 这些事与具体 API 隔离开。所以具体到图形 API 这一层要考虑的就是

- 怎么(分别用 opengl/dx/vulkan )画图片
- 怎么(……)正确混合半透明的图片
- 怎么( )画文字
- 怎么变换摄像机
- ……

那方向就清晰了,先搞清楚怎么用 opengl 把图画出来,然后就可以开始撸了。如果怕 opengl 要凉,那就用 dx 呗,反正到这一层无论用什么 api 要干的活都是同样的那些而已
ChrisFreeMan
2021-09-01 08:30:21 +08:00
@levelworm 好家伙,一个小时起步,我挑两集看看
ChrisFreeMan
2021-09-01 08:32:05 +08:00
@GeruzoniAnsasu 很详细了朋友,有心了
choiceice
2021-09-01 09:01:36 +08:00
GAMES101,202 图形学课程

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/799108

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX