抗锯齿算法?

jma*_*erx 6 c c++ algorithm antialiasing

我有正在创建的纹理,并希望对它们进行抗锯齿处理.我可以访问每个像素的颜色,鉴于此我怎样才能对整个纹理进行抗锯齿处理?

谢谢

小智 8

对不起,但真正的抗锯齿不包括从上面评论的邻居获得平均颜色.这无疑会使边缘变得柔和,但它不是抗锯齿而是模糊.真正的抗锯齿在位图上无法正确完成,因为它必须在绘制时计算,以确定哪些像素和/或边必须"软化",哪些必须不被"软化".例如:假设您绘制的水平线必须正好为1像素(例如"高"),并且必须精确地放置在整数屏幕行坐标上.显然,你会想要它是未经过深化的,并且正确的抗锯齿算法会做到这一点,将你的线描绘成完美的背景色像素包围的完美行像素,完全没有色调混合.但是如果你绘制了相同的线(即位图)并应用平均方法,你会在线的上方和下方模糊,产生3像素厚的水平线,这不是目标.当然,一切都可以通过正确的编码来实现,但是来自一种非常不同且更复杂的方法.


Ala*_*lan 5

"抗锯齿"可以指代广泛的不同技术.这些通常都不是你提前做到纹理的东西.

也许你的意思是mip-mapping? http://en.wikipedia.org/wiki/Mipmap


cod*_*key 5

抗锯齿的基本方法是:对于像素P,对其周围的像素进行采样.P的新颜色是其原始颜色与样本的平均颜色.

您可以采样更多或更少的像素,更改要采样的像素周围区域的大小,或随机选择要采样的像素.

正如其他人所说的那样:抗锯齿并不是对已经是像素位图的图像所做的事情.这是一种在2D/3D渲染引擎中实现的技术.