我希望从最基础的开始学习3D图形编程。我并不想立刻学习DirectX或OpenGL,而是真正理解表面下正在发生的事情。我想从实现一个基本的光线追踪器开始。这似乎很简单,甚至有在线教程。在此之后,我想在DirectX或OpenGL之外的软件中实现图形管道。这是否可能,还是说我会试图穿过一堵墙?人们常说最好的学习方法是通过实践。
3D图形是一个庞大的领域,要回答您的问题需要更多关于您的目标的信息。编写光线追踪器确实是学习一些3D图形基础知识的好方法。DirectX和OpenGL当然设计用于与硬件加速器通信,以进行栅格化为基础的3D渲染,因此如果您真的想了解在低级别上3D图形卡如何在屏幕上生成三角形图像的情况,编写软件光栅化程序将是一个不错的练习。但是,如果您更感兴趣的是如何渲染出3D场景的逼真图像的基本原理,那么我不建议过于关注编写光栅化程序的详细信息。相反,我会着重学习更多关于照明、阴影、反射和折射以及全局照明等方面的内容。所有这些东西都可以相对简单地在软件光线追踪器中实现,其复杂性大部分来自于尝试使它们有效而不是基本原理。如果您的目标更多地是了解低级别的3D硬件操作原理,那就是一个完全不同的大主题。有很好的资源可供学习,但是如果这是您的目标,编写软件光线追踪器并不一定有多大帮助。