Opengl研究4.0 走样与反走样

DionysosLai(906391500@qq.com) 2014-06-25

         走样与反走样,也叫混淆与反混淆。所谓走样,是因为使用离散量(像素)表示连续量(图形)而引起的失真。

         走样现象:

1.      阶梯状的图形边界

         如图所看到的:

                                                                                                                           

         因为像素点是一块一块的,存在锯齿状。

2.       图形细节失真

         因为显示图形的最小单位为像素,像素是由宽度的。有时候,我们可能显示的线段比像素要窄。要小。那么可能出现两种情况:a. 假设显示的线段宽度比像素宽度小一点,将被保留;b. 假设线段非常细,就不会显示。

---->图形的细节失真。

3.       狭小图形的遗失与动态图形的闪烁

         这个是因为图形细节失真造成的。

假设显示线段比較细,假设落在像素中心上,就显示。假设线段正好落在两个像素之间就不显示。---->图形闪烁

 

         反走样,即在图形显示过程中,用于降低或消除走样现象方法。

         反走样方法:

1.      提高分辨率:

         通过硬件。添加像素。--->代价非常大,并且会引起扫描转换时间、帧缓存容量。

2.      非加权区域採样方法

         走样原因:因为在实际中,像素是由实际面积大小不为0,同一时候直线段的宽度是至少为1个像素。

而我们假设是像素面积为0,亮度有覆盖该点的亮度决定,同一时候线段宽度为0。

二者的矛盾是导致走样原因。

         解决方法:

         改变直线度模型,线上像素灰度(颜色)不等。

         方法步骤:

         A.     将直线段看做具有一定宽度的狭长矩形。

         B.      当直线度与某像素相交时,求出两者相交区域的面积。

         C.      依据相交区域面积大小。设置该像素的亮度值。

         关键:

         是怎样计算相交区域面积大小。

因为像素是个正方形。相交面积计算还能够。有个简便方法,就是将正方形划分成n个区域,推断每一个区域(当成点)是否在线段内就可以。

如图所看到的:

                                                                                                                              

         则这个像素的相交面积为3/9;

3.      加权区域採用方法

         对于非加权区域採样方法中,面积的计算时,因为每一个区域的权重是一样的,而实际上对于中心的区域,其贡献值比較大。因此。将像素点的各个区域权重是不一样的。越中央,权重越大。反之。权重越小。权重,一般我们能够用一个矩阵表示:

                                                                                                                             

         那么对于上图的相交面积即为5/16。

Opengl研究4.0 走样与反走样的更多相关文章

  1. OpenGL研究2.0 计算圆

    OpenGL研究2.0 计算圆 DionysosLai2014-06-18 在游戏中.常常有些地方涉及到一些圆的轨迹计算,例如一些转轴类的游戏,人物一般在角色转轴上面运动.这时,我们就要时刻计算角色的 ...

  2. OpenGL研究3.0 多边形区域填充

    OpenGL研究3.0 多边形区域填充 DionysosLai(906391500@qq.com)2014-06-22 所谓多边形区域填充.就是将多边形内部区域,所有已相同色块填充.注意:这里讨论的多 ...

  3. Qt 学习之路 2(26):反走样

    Qt 学习之路 2(26):反走样 豆子 2012年11月12日 Qt 学习之路 2 9条评论 我们在光栅图形显示器上绘制非水平.非垂直的直线或多边形边界时,或多或少会呈现锯齿状外观.这是因为直线和多 ...

  4. NeHe OpenGL教程 第四十六课:全屏反走样

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  5. OpenGL(十八) 顶点数组和抗锯齿(反走样)设置

    顶点数组函数可以在一个数组里包含大量的与顶点相关的数据,并且可以减少函数的调用.使用顶点数组需要先启用顶点数组功能,使用glEnableClientState函数启用顶点数组,参数可以是GL_VERT ...

  6. Simple2D-23(重构)反走样几何图形

    以前 Simple2D 使用 Canvas2D 对象来绘制几何图形,而且渲染出来的几何图形存在明显的锯齿.如果想要抗锯齿的几何图形,则需要开启 OpenGL 的 MSAA,这需要很大的开销. 如果不使 ...

  7. Wu反走样算法绘制圆(C++/MFC实现)

    Wu反走样圆 原理:参考Bresenham算法,在主位移过程中计算出离理想圆最近的两个点,赋予不同的亮度值,绘制像素点即可! MFC 中CXXXView类中添加函数: //Wu算法画反走样圆 void ...

  8. Wu反走样算法绘制直线段

    Wu反走样算法 原理:在我看来,Wu反走样算法是在Bresenham算法基础上改进了一番,它给最靠近理想直线/曲线的两个点以不同的亮度值,以达到模糊锯齿的效果.因为人眼看到的是线附近亮度的平均值. M ...

  9. qt反走样(简选)

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #qt反走样(简选) #概念 """ ...

随机推荐

  1. C++&C#外挂(内存修改)

    大学时候因为主修C#语言(当然现在做的是javaweb开发),那时在网上学了用C#做外挂的教程,外挂嘛,大家都懂的.这里只是低级的修改内存,不涉及到截获数据包.如果是欺骗服务器,修改服务器数据,那就难 ...

  2. Laravel JsonResponse数组获取

    有一个JsonResponse数据的格式如下: object(Illuminate\Http\JsonResponse)[474] protected 'data' => string '{&q ...

  3. 『cs231n』计算机视觉基础

    线性分类器损失函数明细: 『cs231n』线性分类器损失函数 最优化Optimiz部分代码: 1.随机搜索 bestloss = float('inf') # 无穷大 for num in range ...

  4. python-day30--粘包

    一. 什么是粘包 1.须知:只有TCP有粘包现象,UDP永远不会粘包 2.所谓粘包问题主要还是因为接收方不知道消息之间的界限,不知道一次性提取多少字节的数据所造成的. 二.两种情况下会发生粘包. 1. ...

  5. POJ-3635 Full Tank? (记忆化广搜)

    Description After going through the receipts from your car trip through Europe this summer, you real ...

  6. Oracle11g温习-第一章 1、ORACLE实例

    2013年4月27日 星期六 10:23 1.ORACLE 实例 System Global Area(SGA) 和 Background Process(后台进程) 称为数据库的实例. 2.ORAC ...

  7. Leetcode 92

    /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode ...

  8. HDOJ1005

    #include "iostream" using namespace std; int fun(int A,int B,int n) { ,y = ,z; || n == ) ; ...

  9. EBS Workflow参考资料

    参考资料: How to send an email from oracle workflow process using an AdHocRole? Notification System APIs ...

  10. spting Boot 创建一个springBoot项目

    spting Boot 创建一个springBoot项目 1)学习springBoot使用软件:IDEA软件(前面的文章有安装idea的过程). 也可以使用另一种方法在https://start.sp ...