# tinyrenderer **Repository Path**: uchenily/tinyrenderer ## Basic Information - **Project Name**: tinyrenderer - **Description**: tinyrenderer - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-19 - **Last Updated**: 2026-07-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # tinyrenderer 一个从零开始的现代 C++20 软光栅渲染器最小实现,当前版本直接在窗口中实时显示 CPU 光栅化结果,并支持加载外部 OBJ 模型。 当前版本实现了: - `Vec / Mat4` 基础数学 - `look_at + perspective` 相机与投影 - 颜色缓冲与深度缓冲 - 三角形包围盒光栅化 - 重心坐标插值 - 透视校正插值 - 简单 Lambert 漫反射 - OBJ 模型加载 - 近平面裁剪 - 背面剔除 - 视锥体平凡剔除 - SDL2 窗口显示 - 鼠标拖动旋转与滚轮缩放 - `1/2/3/4/5/6/7` 调试视图切换 ## 构建 ```bash just setup just build ./build/renderer assets/models/cube.obj ``` 程序启动时必须传入一个 `.obj` 文件路径。模型会在加载后自动居中、缩放到可视范围,并在 `960x720` 窗口中显示。按住鼠标左键拖动可旋转模型,滚轮可放大缩小。按 `Esc` 或关闭窗口即可退出。 仓库内置了一个可直接运行的示例模型: ```bash just run ``` 或显式指定: ```bash ./build/renderer assets/models/cube.obj ``` 调试视图快捷键: - 鼠标左键拖动:旋转模型 - 鼠标滚轮:缩放 - `1` 着色结果 - `2` 线框 - `3` 深度 - `4` 世界空间法线 - `5` 观察空间法线 - `6` Lambert 灰度 - `7` 坐标轴 ## 目录 ```text src/tinyrender/math.hpp 数学基础 src/tinyrender/image.hpp 图像缓冲 src/tinyrender/rasterizer.hpp 光栅化核心 src/tinyrender/model.hpp OBJ 模型加载 assets/models/cube.obj 示例模型 src/main.cpp SDL 窗口与示例程序 ``` ## 下一步 - 增加纹理采样与透视纹理映射 - 支持材质、纹理坐标与 MTL - 多渲染目标