3D图形学知识汇编

更新,我把代码做了轻微的修改(20行左右)编译成了wasm,可以直接在浏览器中执行,效果还不错,有兴趣的同学可以尝试一下:点我测试

前言

3D 图形学入门文档已经基本完成,包含了完整的渲染流程和详细的数学推导,帮助同学们理解代码为什么这么编写

这是真正的图形学教程,不是 DirectX / OpenGL 使用手册。

在这个教程里,所有的一切,都从画点开始(基于 EasyX),然后一步步构建出复杂的 3D 效果,纯 CPU 渲染,效果如下:

本教程共分为三部分

在第一部分中,我们先学习2D图像绘制的一些相关知识,我们将会学习最基础最核心的知识:在屏幕上绘制图案。只有能在屏幕上绘制图案,我们才能在3D的世界遨游。

在第二部分中,我们将会进入3D的世界,尽情的畅游。

在第三部分中,我们将对前面章节所做出的渲染器进行功能扩展,使其使用起来更加的方便。本部分将会模仿OpenGL的渲染管线来扩充我们渲染器的功

...

纯软件算法实现 3D 渲染(by 桌子)

这个项目用 EasyX 实现了软件渲染器,模仿了很多 OpenGL 的 API 定义(类似 OpenGL 运行库),然后在 main.cpp 里面写用户自己的模型及贴图代码。在源码中有详尽的说明。

软件运行可以得到如下的效果:

主要实现的功能:

  • 一些简单的数学运算(矩阵相乘,向量叉乘等)
  • 使用扫描线多边形填充算法绘制多边形
  • 线性插值(linear interpolation)
  • 透视校正插值(perspective correct interpolation)
  • 深度测试(用于消隐)

一些我想到的但是暂时没实现的功能:

  • 不支持 ddx 和 ddy,所以没有 Mipmap,因为实现起来比较麻烦。
    ddx 和 ddy 是指在屏幕空间上求 vbo 的偏导数。真正的 GPU 绘制的时候
...