2D三角形光栅化算法

原创 2012年03月31日 11:49:47

开发过程中有这么个需求做cpu端2d的三角形光栅化,这个做法真是够简洁(我自己开始想的就没这个简洁, 囧)。

http://courses.cms.caltech.edu/cs171/barycentric.pdf


算法:

如果想用p0,p1,p2往一个buffer上画,

先用bycentric coordinate来把buffer上一个点表示就是:p=alpha*p0+beta*p1+gamma*p2;

这里alpha+beta+gamma=1;

如果alpha, beta, gamma都在[0,1],那么这个点就是在triangle里面。


这个bycentric coordinate另外一个好处是,除了判断是不是在triangle里面,还可以用来插值uv,color这种,带入alpha*x0+beta*x1+gamma*x2就可以了。


bycentric coordinate计算:

两个图直接搞定:




其他:

其他还有一些更通用的,基于scan line的算法,比如这个:http://www.cs.uu.nl/docs/vakken/gr/resources/08-triangles.slides.pdf

不过时间不多,就不一一看了,暂且心向往之

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

详解D3D/OpenGL光栅化(1)

本篇简单地讨论一个问题:给出图元(三角形/线/点)的顶点坐标及颜色,DirectX 3D(D3D)/OpenGL(OGL)如何确定最终在屏幕上画出的结果? 从D3D Pipeline看[1],这些工...

2013年11月13日星期三(DEMO8_9,三角形光栅化)

首先,介绍了一种算法,就是 1, 凸边形顶点按照顺时针或者逆时针顺序排列, 2, 先提取3个点,组成一个三角形,并分离这个三角形, 3, 再把剩下n-1个点递归计算,   然后提出了矢量光栅...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

光栅算法

多数计算机图形图像,是通过光栅显像显示给用户的。这种系统将图像作为像素阵列进行显示,像素即图像元素。这些像素采用RGB颜色空间。

从零实现3D图像引擎:(15)三角形的光栅化

1. 为什么要光栅化一个三角形我们不能总让我们的引擎显示线框,要支持实心颜色、光照还有纹理贴图,这些都需要光栅化一个三角形作为支持。  2. 三角形的类型为了方便光栅化,一般将三角形分为以下4种:  ...
  • cppyin
  • cppyin
  • 2011-03-08 20:15
  • 12138

[软件渲染器入门]四,填充光栅化的三角形并使用深度缓冲

本章我们将讲解如何使用三角形光栅化算法来填充三角形。然后,我们将使用深度缓冲,以避免在后面的面跑到前面来的问题。

那些年我看到开源工程中的 光栅化算法

code source:salvia 代码展示 template void CRasterizer::rastTri_constColTex(int iy0,int iy1,sfByte8* b...
  • titer1
  • titer1
  • 2014-11-06 20:45
  • 1587

渲染管线——光栅化之Bresenham绘线算法

在完成了渲染管线的几何阶段之后,我们得到了三维物体在屏幕上的二维坐标,接下来,我们将进行光栅化操作。光栅化计算机屏幕是由点阵构成的,这些点阵称为像素。显然,这些像素是离散的,我们是不可能精确的绘制出绝...

图形学学习笔记2——点阵图形光栅化

点阵图形光栅化 将参数描述的图形转化为点阵的算法,评价指标有:精度、时间复杂度、空间复杂度。对实时性要求高的实时渲染场景比如游戏动画,应该需要更快的转化为点阵。类似制作动画片的离线渲染就对精度要求更...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)