
这个项目用 EasyX 实现了软件渲染器,模仿了很多 OpenGL 的 API 定义(类似 OpenGL 运行库),然后在 main.cpp 里面写用户自己的模型及贴图代码。在源码中有详尽的说明。
软件运行可以得到如下的效果:
主要实现的功能:
- 一些简单的数学运算(矩阵相乘,向量叉乘等)
- 使用扫描线多边形填充算法绘制多边形
- 线性插值(linear interpolation)
- 透视校正插值(perspective correct interpolation)
- 深度测试(用于消隐)
一些我想到的但是暂时没实现的功能:
- 不支持 ddx 和 ddy,所以没有 Mipmap,因为实现起来比较麻烦。
ddx 和 ddy 是指在屏幕空间上求 vbo 的偏导数。真正的 GPU 绘制的时候