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

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

你们都是我大哥

4316 次点击
所在节点    游戏开发
24 条回复
lcdtyph
2021-08-31 18:54:28 +08:00
opengl 教程很多啊,零基础的话直接去看 learnopengl-cn.github.io 就好了。

vulkan 建议对 gpu 硬件架构比较了解之后再学习,它的 api 太底层了,牺牲了便利性换来了自由度和渲染效率
ChrisFreeMan
2021-08-31 18:57:41 +08:00
@lcdtyph 好的,多谢
ChrisFreeMan
2021-08-31 18:58:28 +08:00
请问 openGL 未来会消亡吗,我看知乎上说,未来 OpenGL 会被 Vulkan 给取代,以及苹果都呈现放弃的姿态了。学习 OpenGL 对于过度到 Vulkan 有帮助吗,我害怕 49 年入国军
kokutou
2021-08-31 19:00:52 +08:00
你先学个容易学的现在资料多的。。。
流程搞懂了切过去很简单的。。。
codehz
2021-08-31 19:01:19 +08:00
2d 游戏引擎的话,现在你用啥都差不多,因为最重要的部分根本不是图形 API,还不如找个简单点的先把框架搭建起来,实在要移植也可以用 ANGLE 凑合用下
xarthur
2021-08-31 19:10:24 +08:00
对于引擎来说重要的不是图形 API,主流的商业游戏引擎应该应该都同时支持 Metal 、DirectX 、OpenGL 、Vulkan 吧。
ChrisFreeMan
2021-08-31 19:20:24 +08:00
多谢各位回复,其实我是纯个人兴趣的,不是想要搞个什么商业引擎,没那么牛逼,就是想进阶一下基础图形知识。。抱歉没说清楚。我觉得我还是先自己探索一番,再来提出更有价值的问题。
joshua7v
2021-08-31 20:08:00 +08:00
图形 api 和图形学知识是两码事
想补理论基础,建议从软件渲染(cpu)开始
bitdepth
2021-08-31 20:12:32 +08:00
opengl 是不會過時的,vulkan 其實不適合做繪圖用途,太過複雜,大多數場景沒有意義。
而 directx3d 支援只是選項而已,懂 opengl 就會 directx3d 而且現代 windows 平台哪個不支援 opengl ?
typetraits
2021-08-31 20:16:37 +08:00
基础图形知识从手撸渲染管线开始,再搞个 CPU PBR 渲染就差不多了
我学图形学的时候根本没用过 OpenGL,一开始接触的就是 Vulkan,然后反向照着 Vulkan 接口实现了 CPU 渲染器
我个人认为接触一下 Vulkan 是有好处的,虽然繁琐,但 Vulkan 设计上非常接近 GPU 的工作原理,可以让你在学习 API 的同时对 GPU 的工作流程有大致的了解
Mutoo
2021-08-31 20:34:29 +08:00
苹果已经明确宣布将从 macOS 上移除对 OpenGL 的支持,所以如果你要做跨平台的游戏的话,支持 Metal 几乎是必须的。如果自己想实现一个简单的游戏引擎的话,可以使用 bgfx 来支持跨平台渲染后端,你只要注重游戏引擎的其它部分,就行了。
https://github.com/bkaradzic/bgfx
Mutoo
2021-08-31 20:36:42 +08:00
另外如果对跨平台渲染有兴趣的话,推荐你这个系列:
https://marcelbraghetto.github.io/a-simple-triangle/
ChrisFreeMan
2021-08-31 21:19:32 +08:00
@Mutoo 看起来是干货,必须道个谢
ChrisFreeMan
2021-08-31 21:28:24 +08:00
多谢各位大哥的回复,我都看了,我目前不知道怎么回复你们,这对于我来说是一个未知的领域,我需要一点点了解
frankmdong
2021-08-31 22:49:32 +08:00
跟着 theCherno 写游戏引擎吧,也是先做的 2D 的功能,渲染 API 也封装了一层,一开始用的是 OpenGL,后来他在自己的 develop branch 接了 Vulkan,https://www.youtube.com/playlist?list=PLlrATfBNZ98dC-V-N3m0Go4deliWHPFwT
这个我也跟了一大半了,跟着封装了不少渲染相关的接口,学跨平台的处理,还用 ImGUI 做了个编辑器。
渲染流程不太熟悉的话可以先学学 OpenGL,他也有单独的 OpenGL 的系列教程。
基础牢靠了,之后再在 Vulkan 、DirectX12 、Metal 这些新图形 API 里面挑一个学。
levelworm
2021-08-31 22:59:14 +08:00
2D 没什么东西啊,我记得你之前不是用 c#写了一个吗?
ChrisFreeMan
2021-08-31 23:46:58 +08:00
@levelworm 那玩意用的是别人封装比较高层的框架写的,只是一个简单的关卡编辑器,很多细节的东西还是不是很了解
levelworm
2021-09-01 01:37:13 +08:00
@ChrisFreeMan 之前建议用 C++和 sdl2 我觉得可以试试看,相对底层,封装的不是很多。如果真的想要更底层,可以看看 youtube 上有个系列是 c game programming from ground up
levelworm
2021-09-01 01:38:02 +08:00
dtysky
2021-09-01 01:41:44 +08:00
直接上 WEBGPU,简单的很。

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

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

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

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

© 2021 V2EX