Repolode
ssloy

ssloy/tinyrenderer

一门通过约 500 行纯 C++ 从零实现软件渲染器的图形学入门课程。

Star
24,450
Fork
2,311
未关闭 Issue
4
最近提交
3个月前

这是什么?

Tinyrenderer 是一套教程,通过从零编写软件渲染器来讲解 OpenGL、Vulkan、Metal 和 DirectX 等 3D 图形 API 的工作原理。项目不调用 GPU 接口,而是用纯软件实现直线绘制、三角形光栅化、重心坐标、深度缓冲、相机处理、着色、纹理与法线贴图、阴影映射和环境光遮蔽等内容。

代码约 500 行 C++,不依赖任何第三方图形库,唯一的辅助类只用于读写 TGA 图片。它的核心是按顺序展开的课程笔记,源码更适合作为学习材料阅读,而不是直接当作库使用。

程序输入三角网格 3D 模型和纹理,输出渲染图像,没有图形界面,使用 CMake 构建。

核心功能

  • 01用约 500 行 C++ 从零实现软件渲染器。
  • 02按步骤讲解光栅化、深度缓冲、相机和着色。
  • 03涵盖纹理、法线贴图、阴影映射和环境光遮蔽。
  • 04不依赖第三方图形库,仅使用简单的 TGA 图片读写类。
  • 05以编号课程文章的形式组织内容。

适用场景

  • 理解 OpenGL 或 Vulkan 渲染管线的底层原理。
  • 用于图形学课程或光栅化入门教学。
  • 在使用 GPU 接口前先理解重心坐标、深度缓冲和法线贴图。

快速上手

  1. 1

    克隆仓库

    git clone https://github.com/ssloy/tinyrenderer.git
  2. 2

    进入项目目录

    cd tinyrenderer
  3. 3

    使用 CMake 配置并编译

    cmake -Bbuild && cmake --build build -j
  4. 4

    对示例模型运行渲染器,输出保存为 framebuffer.tga

    build/tinyrenderer obj/diablo3_pose/diablo3_pose.obj obj/floor.obj

使用前须知

  • 代码是教学练习,README 建议不要直接使用。
  • 这是软件渲染器,并不演示如何编写 GPU 应用。
  • 许可证信息不明确(NOASSERTION)。

标签

常见问题

tinyrenderer 是什么?
一门通过约 500 行纯 C++ 从零实现软件渲染器的图形学入门课程。 Tinyrenderer 是一套教程,通过从零编写软件渲染器来讲解 OpenGL、Vulkan、Metal 和 DirectX 等 3D 图形 API 的工作原理。项目不调用 GPU 接口,而是用纯软件实现直线绘制、三角形光栅化、重心坐标、深度缓冲、相机处理、着色、纹理与法线贴图、阴影映射和环境光遮蔽等内容。
tinyrenderer 可以免费使用吗?用的什么许可证?
tinyrenderer 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
tinyrenderer 还在维护吗?
半年内有更新。tinyrenderer 最近一次提交是在 2026年7月29日。
tinyrenderer 适合用来做什么?
理解 OpenGL 或 Vulkan 渲染管线的底层原理。 用于图形学课程或光栅化入门教学。 在使用 GPU 接口前先理解重心坐标、深度缓冲和法线贴图。
tinyrenderer 怎么安装和运行?
克隆仓库: git clone https://github.com/ssloy/tinyrenderer.git 进入项目目录: cd tinyrenderer 使用 CMake 配置并编译: cmake -Bbuild && cmake --build build -j 对示例模型运行渲染器,输出保存为 framebuffer.tga: build/tinyrenderer obj/diablo3_pose/diablo3_pose.obj obj/floor.obj
在哪里获取 tinyrenderer?
源代码和安装说明在 GitHub 上:https://github.com/ssloy/tinyrenderer

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目