[从零构建光栅渲染器] 0.引言

[从零构建光栅渲染器] 0.引言

常感谢和推荐Sokolov的教程,Sokolov使用500行C++代码实现一个光栅渲染器。教程学习过程非常平滑,从画点、线和三角形开始教学,在逐步深入三维变换,投影,再到顶点着色器,片段着色器等等。教程地址:https://github.com/ssloy/tinyrenderer。Sokolov的教程为英文,我翻译了其文章。

在学习过程中,有些内容可能您可能云里雾里,这时就需要查阅《计算机图形学》的书籍了,这里面的算法和公式可以帮助您理解代码。

作者:尹豆(憨豆酒),联系我yindou97@163.com,熟悉图形学,图像处理领域,本章代码: https://github.com/douysu/computer-graphics-notes

介绍

这是一个微型的软件渲染器,如果你正在寻找一个微型光线追踪器,在这里找到here

我的源码是不相关的。阅读这个教程和实现你自己的渲染器。只有你经历了所有小细节后,你才能学会。

我非常希望你可以发反馈给我,邮箱:dmitry.sokolov@univ-lorraine.fr,当你有问题时,不要犹豫,赶紧联系我。

如果你是一名教师,并想采在课堂上用这个资料。非常欢迎这么去做,不需要任何授权。只需要发邮件通知我就行,可以帮助我提高这个课程。

在这系列文章中,我编写一个简单版本的软件来描述OpenGL是如何工作的。令人惊讶的是,我经常遇到学不会OpenGL/DirectX的人。因此,我准备了一个简短的讲义,我的学生都做出了不错的渲染器。

所以,这个任务如下:不使用第三方库,渲染得到下面这张图片:

提醒:这是一份可以轻松重复OpenGL结构的材料,它使一个渲染器。我不想教学如何去写OpenGL程序,我想教学OpenGL是如何工作的,我深信如果不理解工作原理是不会写出高效的3D程序的。

最后的代码只有500行。我的学生需要10-20小时制作这个渲染器。输入:包含多边形信息的文件+纹理图像。输出:程序会生成一幅图像。

目标是最大程度地减少外部的依赖,我为我的学生提供了一堂课去学习TGA文件。TGA是一种支持RGB/RGBA/Black/White的一种图像格式。所以,开始,我们获得一种简单的处理图片的方式。应该注意,除了加载和保存图像外,一开始的功能就是设置一个像素的颜色。

没有方法去绘制直线和三角形。我们需要自己去写,我提供我与我的学生共同抒写的源代码。但是我不建议你使用它,这是没有意义的。完整的代码在github上可以找到,在这里here你可以找到我给我学生的源代码。

#include "tgaimage.h"
const TGAColor white = TGAColor(255, 255, 255, 255);
const TGAColor red   = TGAColor(255, 0,   0,   255);
int main(int argc, char** argv) {
        TGAImage image(100, 100, TGAImage::RGB);
        image.set(52, 41, red);
        image.flip_vertically(); // i want to have the origin at the left bottom corner of the image
        image.write_tga_file("output.tga");`
        return 0;
}

output.tga 是这样的

使用此渲染器渲染的一些案例

Reference

  1. https://github.com/ssloy/tinyrenderer

  2. https://zhuanlan.zhihu.com/cgnotes

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值