TinyRenderer 0:准备开始

前言

本文是对开源项目 TinyRenderer 的学习记录。

这个项目的作者试图教会我渲染API的工作原理,原因是很多人学OpenGL和DX的时候都止步于初始化了……= =希望一个不依赖第三方的卫星软渲染器可以帮助理解。

预计最终代码在500行左右。

输入多边形信息和贴图图片的测试文件,会输出一个模型。

这个程序不会有图形界面,只有输入输出。

为了尽量减少第三方以来,只会用到TGA类来输出图片。

线段绘制算法和三角形绘制算法需要我们自己写,当然作者提供了源码。

正文

TGA类在这儿:

TGAImage.CPP

TGAImage.h

然后可以用下面这个简单的测试例子输出一张测试用图片:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

#include "TGAImage.h"

// 定义TGA颜色 白色
const TGAColor white = TGAColor(255, 255, 255, 255);
// 定义TGA颜色 红色
const TGAColor red = TGAColor(255, 0, 0, 255);

int main(int argc, char** argv) {
// 创建一个新的TGA对象,长100宽100的RGB格式图像
TGAImage image(100, 100, TGAImage::RGB);
// 设置52,41坐标的点颜色为红色
image.set(52, 41, red);
// 将图片垂直翻转,这样子原点会变成左下角
image.flip_vertically();
// 将image写入文件output.tga
image.write_tga_file("output.tga");
return 0;
}

输出的图片文件长这样:

20211223220625


TinyRenderer 0:准备开始
http://muchenhen.com/posts/60170/
作者
木尘痕
发布于
2021年12月23日
许可协议