草庐IT

光栅化

全部标签

软光栅从零开始——Bresenham’s Line

Bresenham算法介绍​ 画线算法有三种,分别是DDA算法、中点算法、Bresenham算法,但为什么我们选择Bresenham算法呢?因为Bresenham算法仅仅使用整数加法、减法和位移,是一种增量误差算法,这些操作省时高效精确,是当前最有效的画线算法。并且,此算法并不局限于直线,圆等其他曲线同样可以画。更重要的是,该算法用于绘图仪等硬件和现代显卡的图形芯片中,以及非常多的软件图形库中都可以看到他的身影。鉴于Bresenham算法的简单高效,因此我们选用他作为实现渲染器的一部分Bresenham算法思想​ 在图形学中,屏幕是一个二维数组,数组里的每一个元素都为一个像素,其中每个像素都必

软光栅从零开始——Bresenham’s Line

Bresenham算法介绍​ 画线算法有三种,分别是DDA算法、中点算法、Bresenham算法,但为什么我们选择Bresenham算法呢?因为Bresenham算法仅仅使用整数加法、减法和位移,是一种增量误差算法,这些操作省时高效精确,是当前最有效的画线算法。并且,此算法并不局限于直线,圆等其他曲线同样可以画。更重要的是,该算法用于绘图仪等硬件和现代显卡的图形芯片中,以及非常多的软件图形库中都可以看到他的身影。鉴于Bresenham算法的简单高效,因此我们选用他作为实现渲染器的一部分Bresenham算法思想​ 在图形学中,屏幕是一个二维数组,数组里的每一个元素都为一个像素,其中每个像素都必

软光栅从零开始——绘制线框、背面剔除、zbuffer

在此篇中,我们将学习如何绘制一个三角形并对其进行着色,如何判断屏幕中同一个像素位置顶点的前后顺序绘制三角形和平面着色​ 绘制图形,我们需要画线也就需要学习画线算法,但图形种类多种多样,为什么我们选择学习三角形呢?​ 因为三角形是最基本的多边形,其拥有许多特性:三角形可以分解其他多边形,也就是我们可以不断分解其他多边形,最终形成有多个三角形组成的多边形三角形保证是平面的三角形可以用叉乘判断内外三角形内部可以定义插值​ 在讲明为什么我们选择三角形作为最基本的图形后,我们现在来学习如何绘制一个三角形​ 按照之前的画线算法,我们可以很轻松的画出三角形来,如下图。但问题是我们平时在游戏中看到的丰富多彩的

软光栅从零开始——绘制线框、背面剔除、zbuffer

在此篇中,我们将学习如何绘制一个三角形并对其进行着色,如何判断屏幕中同一个像素位置顶点的前后顺序绘制三角形和平面着色​ 绘制图形,我们需要画线也就需要学习画线算法,但图形种类多种多样,为什么我们选择学习三角形呢?​ 因为三角形是最基本的多边形,其拥有许多特性:三角形可以分解其他多边形,也就是我们可以不断分解其他多边形,最终形成有多个三角形组成的多边形三角形保证是平面的三角形可以用叉乘判断内外三角形内部可以定义插值​ 在讲明为什么我们选择三角形作为最基本的图形后,我们现在来学习如何绘制一个三角形​ 按照之前的画线算法,我们可以很轻松的画出三角形来,如下图。但问题是我们平时在游戏中看到的丰富多彩的

软光栅从零开始——MVP变换

前言在上一篇中,我们以正交投影的方式学习了如何绘制三角形,但在生活中我们眼睛看到的现象用正交投影无法解释。比如如果是正交投影,我们看到的铁道两个铁轨在视角上并不会交于一点,也就是两个铁轨的间距并不会随着离我们的位置越远,而变小,实际上这正是透视投影。因此,对于渲染摄像机理解为我们的眼睛,用透视投影来表示;而正交投影则主要用于主要用于二维渲染以及建筑工程软件如下右边是正交投影,左边是透视投影2d变换​ 开始之前,需要提醒一下,以下向量表示都是列向量缩放 沿主轴缩放反射 2维中围绕直线翻转对象错切(剪切) 不均匀地拉伸坐标空间。思路是将一个坐标的倍数添加到另一个坐标上旋转 二维中围绕一点旋转平移

软光栅从零开始——MVP变换

前言在上一篇中,我们以正交投影的方式学习了如何绘制三角形,但在生活中我们眼睛看到的现象用正交投影无法解释。比如如果是正交投影,我们看到的铁道两个铁轨在视角上并不会交于一点,也就是两个铁轨的间距并不会随着离我们的位置越远,而变小,实际上这正是透视投影。因此,对于渲染摄像机理解为我们的眼睛,用透视投影来表示;而正交投影则主要用于主要用于二维渲染以及建筑工程软件如下右边是正交投影,左边是透视投影2d变换​ 开始之前,需要提醒一下,以下向量表示都是列向量缩放 沿主轴缩放反射 2维中围绕直线翻转对象错切(剪切) 不均匀地拉伸坐标空间。思路是将一个坐标的倍数添加到另一个坐标上旋转 二维中围绕一点旋转平移