从零开始手写渲染器(0 大纲介绍)----tinyrenderer中文翻译+个人理解

目录

内容介绍

lesson 0:

TGA文件

生成TGA文件的简单示例


 github链接

课程代码集合

内容介绍

        这一系列文章主要是在翻译github上的tinyrenderer教程。想要学习tinyrenderer,需要先去学习games101的第一部分渲染相关的内容,同时我也会以初学者的角度尽可能易懂的去讲解tinyrenderer各个功能的实现,若有讲的不好的地方还请各位指正。

lesson 0:

        这篇文章主要用于模仿OpenGL的工作流程(简化),非常吃惊的是,有很多人被OpenGL/DirectX的入门学习困扰。因此,我已经准备一系列简短的课程,我的学生在学习之后做出了相当不错的渲染器。

        所以,我们要做的是:不使用第三方库,得到一些如下的图片:

18558590b1f14da2b8ec665b0bc2dd46.png

警告:这篇文章只用于说明OpenGL的工作流程,而不会去教你怎么使用OpenGL。

        我将会尝试使用大概500行去编写这个编译器。但我的学生们将需要10到20个小时做出同样的效果。在输入信息中,我们会使用一个文件,它由多边形的线(相当于给很多个顶点坐标之类的信息,指定哪几个顶点连线的信息,之后会详细说明)+纹理贴图组成。在输出中,我们将会得到一个被渲染过的图片。由于没有使用图形接口,这个程序只是简单的输出一个图片。

TGA文件

        为了尽可能减少对外界库的依赖,我仅仅给出一个生成TGA文件(按我的理解相当于一张图片)的类。TAG格式是最简单的格式,能够生成RGB/RGBA/黑白格式的图像。所以,作为开始,我们将会使用一个简单的方法去生成这个图片。您应该注意,我们将使用的是唯一提供给我们的函数(除了加载模型,保存图片的函数以外唯一提供的函数):能够在像素上设置一种颜色。

        我不会提供绘制线段或填充三角形的函数,我们将会一起实现这些功能。

生成TGA文件的简单示例

#include "tgaimage.h"
// 设置RGBA的值
const TGAColor white = TGAColor(255, 255, 255, 255);
const TGAColor red   = TGAColor(255, 0,   0,   255);
int main(int argc, char** argv) {
        // 开启画框,大小为100(像素)*100(像素)
        TGAImage image(100, 100, TGAImage::RGB);
        //绘制像素处于x=52,y=41处的像素,颜色为red
        image.set(52, 41, red);
        //将图片中的顶点翻转,变成以左下角为中心
        //image以左上角为原点,经过这个函数以后图片会进行上下翻转,相当于以左下角为原点
        image.flip_vertically(); // i want to have the origin at the left bottom corner of the image
        //生成output.tga文件
        image.write_tga_file("output.tga");
        return 0;
}

(图中红色的像素点)

318b0452d75a42e6847070ab593d0c37.png

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zmzzz666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值