手把手教你软渲染 #1 - 开发环境搭建
前言
什么是软渲染
软渲染,即是用软件方式模拟在 GPU 上运行的渲染流水线,就是说在 CPU 上用软件模拟本该由 GPU 承担的工作。要实现一个软渲染器,就是只用 DrawPixel
这一个硬件接口,来完成模型的整个渲染管线。
为什么要做软渲染
手动实现渲染流水线,是学习图形学最硬核的方式,能够大大提高我们对渲染管线的理解程度。
教程目标
手把手教你实现一个软渲染器,并支持 Windows 和 Mac OS 两个平台。
环境搭建
SDL2
要渲染一个模型,首先得要创建窗口,我选择开源库 SDL2,这个库不仅提供窗口相关接口,还提供绘制像素的 SDL_RenderDrawPoint
接口,即前言里所述的 DrawPixel
,可谓一举两得。
以下分两个平台讲解如何下载 SDL2。
Windows
首先去官网下载:Simple DirectMedia Layer - SDL version 2.0.16 (stable) (libsdl.org)
选择 VC 版的开发库,下载后解压缩。
我们只需要用到 include
和 lib
这两个文件夹,并且我不打算支持 32 位环境,所以 lib/x86
这个文件夹下我们也不需要,我们把 x86 文件夹删掉,然后把 x64 文件夹下整个内容上移到 lib 文件夹下。
Mac OS
在 Mac 上我们安装开源库就方便多了,直接通过 homebrew 安装即可:
brew install sdl2
XMake
由于我们要做的项目是要同时支持 Win 和 Mac 两个平台的,VS 和 XCode 分别是两个平台很强大的 C/C++ IDE,但是它俩的工程文件结构并不互通,分开创建两个工程太过麻烦,所以一个好用跨平台的构建工具就很有必要了。
其实我首先想到的是大名鼎鼎的 CMake,但是在使用过程中我遇到了两个问题:
- CMake 的语法过于晦涩,学习难度大,我花了两天才搞定在 mac 上的配置;
- 同样的 CMakeLists 在 windows 上不凑效,我查阅多方资料,设置尝试了 vcpkg 也没搞定。
于是我被逼无奈,抱着死马当活马医的心态尝试了 XMake,没想到这个国产的工具竟让我眼前一亮👀
XMake 的语法是基于 Lua 的,而且接口相当统一,基本上都是以 get_
或 set_
开头,简单明了。与 CMake 的命令相比,那简直没有学习难度可言。
可以根据官方引导文档下载 xmake,👉传送门:Installation (xmake.io)
文件结构
在此说明一下我们的项目文件结构:
其中,src
是存放我们自己的源代码的地方,third_party
是存放第三方库的地方,third_party/SDL2-2.0.16/lib
文件夹中的文件都是 Windows 平台的 64 位发行版。
xmake.lua
就是 XMake 所用到的配置文件啦,以下是我们的项目配置:
add_rules("mode.debug"