DrawLine 消除 set_pixel

This commit is contained in:
SepComet
2026-06-07 19:25:00 +08:00
parent 08088c8413
commit 16d961e9f3
4 changed files with 205 additions and 105 deletions
+2 -1
View File
@@ -100,7 +100,8 @@
这意味着:
- 当前 demo 还没有实现完整的视锥裁剪
- 如果一条线段只有一部分还在屏幕内,但端点已经越出 NDC,整条线仍可能被直接丢弃
- **2D 屏幕空间线段裁剪已实现**:`Rasterizer::DrawLine` 使用 Cohen-Sutherland 算法对屏幕边界做裁剪,部分在屏幕内的线段可以正确绘制,不再整条丢弃
- 3D 视锥裁剪(齐次裁剪空间)仍未实现
## 8. 屏幕与像素坐标
+1
View File
@@ -91,6 +91,7 @@
- 像素写入路径应尽量减少分支和函数调用层级。
- 像素级写入的 Release 快路径不要使用带额外边界检查的容器访问(例如 `std::vector::at()`);边界检查应在外层完成。
- 裁剪、剔除、包围盒收缩要尽早执行,避免把不可见数据送入像素级循环。
- `Rasterizer::DrawLine` 已采用此策略:入口做快速全屏可见性检查,屏幕内直接走 `set_pixel_unsafe` 快路径;屏幕外走 Cohen-Sutherland 裁剪后再走快路径。
- 三角形属性插值、深度测试、纹理采样等未来功能必须先定义定点/整数方案,再接入热路径。
- PC 调试版可以保留更易读的检查与可视化代码,但 ARM release 路径必须能关闭这些额外成本。