通过 devc++ 开发图形程序的不同阶段的性能局限,认识辅助学习的图形库和专业的图形库之间的具体区别

1. 不使用图形库开发 3D 游戏效果——自问自答 使用 devc++ 移植 高精度 命令行窗口光线追踪代码,用 5 秒一帧的画面更新,理解 3D 游戏使用 GPU 加速的必要性 - CodeBus 没有 GPU,大图 5 秒一帧(-O3 优化,缩小窗口显示区,可以达到 1 秒 2 帧),但游戏开发远远不够。

2. 使用 easyx 图形库开发 3D 渲染——这个难说。CodeBus 里有先生给了 3D 魔尺代码,说明能 easyx 能跑。但是跑同网站另一位先生翻译的Ray Tracing in One Weekend 的代码,3 分钟出来一张图,详情链接。我也是用 devc++ 在以上几次尝试之后才有所理解ModernGraphicsEngineGuide/Docs/01-GraphicsAPI/1.基础.md at main · Italink/ModernGraphicsEngineGuide (github.com) 所解释的”流水线(pipeline)“概念——用点计算出面来,这些的面被分给 GPU 单元分别渲染,然后再把这些渲染好的片段按顺序组合在一起。

3. 所以有必要使用显卡加速,但是用 devc++ 可还行?—我使用官网封装好用来测试的 devc++,来跳过配环境,直接按 Dev-c++中安装配置 OpenGL 环境_devc++opengl-CSDN 博客 里的图片示意成功运行了模板代码。但是这个老版本的 OpenGL 配套资源源代码还没找到,只能零散搜集。

但是这里还有必要说明一下 OpenGL 和 Directx 这俩做 3D 的图形库。简单理解就是增加了显卡调用 API 的 easyx,可以绘制更加复杂的 3D 场景,但是代码步骤也更加复杂。

OpenGL 实现的是多个平台移植,不管是 Linux, windows, mac 只要用了同一个版本的 OpenGL 标准,就能代码复制粘贴直接跑。

DirectX 是微软开发的。只能在 windows 上跑,有的些年代的显卡不会支持新版本,新版本可以兼容足够规模的老版本。

这俩图形库具体故事可以参考 OpenGL,OpenGL ES,Vulkan,WebGL,DirectX 的区别和联系- 知乎 (zhihu.com)

4. 没来得及判断 devc++ 里的 OpenGL 版本,我又去用 devc++跑 DirectX 代码。然后跑成了,也收集到了官方文档。CodeBus 有问必答板块 自问自答 关于 devc++ 开发图形库 DirectX9 的流程说明 -CSDN 博客

5. 但是网上查查 DirectX9 发现是要被淘汰的东西了,学淘汰的东西不是不行,但是又要与时俱进呢?中途看见 DirectX12 的开发案例,于是我又在 VS2022 上整了一个,也找到相关素材了。具体的教程如下CodeBus 有问必答 使用 VS2022 最小工具集 开发 windows 图形库 Direct12 操作流程-CSDN 博客

6. 这样无论是 devc++ 还是 VS2022,都可以敲代码调用自己的显卡了,但是不能像 CUDA 那样用 malloc 分配显卡资源。但是想起来还有 python 的 pytorch 调用 GPU 进行通用计算,整 AI 模型。鉴于 2D,3D 图形开发也就这么回事,环境配置,素材资源,图形情况这般清楚了。我后续更新一下用 python 的 pytorch 搓 AI 的自问自答。(链接可能补上。因为 easyx 贴吧的目录里有人工智能,说明这一条还是能在这里细说的。

添加评论