3D
xuzhimin1991
这个作者很懒,什么都没留下…
展开
-
500行C++代码实现软件渲染器 - 2.三角形光栅化与背面剔除
填充三角形大家好,这是我。更精确来讲,这是用接下来一两个小时内我们将创建的程序渲染出来的我的脸的模型。上一次,我们绘制了三维模型的线框。这一次,我们将填充多边形,或者三角形。事实上,OpenGL几乎会对所有的多边形进行三角化,所以这里我们不需要去考虑更复杂的情况。需要提醒的是,本系列教程设计的目的是帮助你自己独立编程。当我说你可以在两个小时内绘制一个类似上面的图像,我并不是说阅读代...翻译 2019-01-17 11:07:52 · 1496 阅读 · 0 评论 -
500行C++代码实现软件渲染器 - 3.隐藏面消隐(Z缓冲区)
引入您好,我来介绍一下我的朋友z缓冲区,一个黑色的伙计。 他将帮助我们避免上一课中隐藏面移除的视觉效果。顺便说一句,我想提一下,我在课程中大量使用的这个模型是由Vidar Rapp创建的。 他授予了我使用许可,以便我可以教授关于渲染的基础知识。虽然我对它进行了破坏,但我保证我会把眼睛还给那个人。好吧,回到主题,理论上我们可以绘制所有三角形而不丢弃任何一个。 如果我们正确地从后到前开...翻译 2019-01-18 16:41:45 · 1277 阅读 · 0 评论 -
500行C++代码实现软件渲染器 - 0.引言
直接阅读源代码并不容易理解,建议阅读维基之后再来实现你自己的渲染器。只有当你弄懂了所有的技术细节之后,你才会知道渲染器如何工作。我很乐意通过邮件得到读者的反馈。如果你有任何问题,欢迎与我联系(dmitry.sokolov@univ-lorraine.fr)。如果你是一名教师,希望在课堂上使用本材料,我对此非常欢迎,不必授权,只需要通过邮件告知我即可,因为这能够帮助我改进本课程。本系列文章中,我...翻译 2019-01-10 18:52:45 · 1984 阅读 · 0 评论 -
500行C++代码实现软件渲染器 - 1.Bresenham直线绘制算法
第一版这一课的目标是绘制线框。为了实现这个目标,我们需要先学会绘制线段。我们可以直接阅读Bresenham直线算法的内容,但是我们还是自己写代码实现。要实现点(x0,y0)和(x1,y1)之间线段的绘制,代码应该怎么写呢?显然,代码可能是这样:void line(int x0, int y0, int x1, int y1, TGAImage &image, TGAColor c...翻译 2019-01-10 18:53:05 · 1124 阅读 · 0 评论