【杂记】OpenGL_多重抗锯齿采样

【OpenGL】笔记二十九、抗锯齿(MSAA) 经过之前的教程,我们目前渲染出来的画面已经有了足够的表现力,但是还是有一些缺陷,比如当我们的渲染画面分辨率跟不上屏幕分辨率时,在我们渲染的图形边缘一些比较严重的锯齿效果就会显现: 自然,这种效果就是因为画面采样像素太少,从而在一条直线上出现了明显的“断带”: 那么,理所当然的,解铃还须系铃人,我们可以增大采样数量,而目前应用比较广泛的抗锯齿方法也是多重采样MSAA,这种方法的原理很简单,就是将每个采样的像素分为四个像素进行采样计算,最后将结果进行平均计算: 在【OpenGL】笔记二十三、帧缓冲中,我 阅读详情

平时采样,都是一个像素里一个采样点。如果这个采样点在图元里面,那么就是图元的颜色,反之就不是

这样相邻像素之间的颜色差值会很大。

抗锯齿采样有一个比较好的解决方法,但是耗费性能很大:就是SSAA(Super Sampling AA)。提高分辨率绘制图像。然后再对绘制好的图像进行下采样。但是提高分辨率,像素点也会成倍的增加,着色器会被调用更多次。

还有一个解决方法是:MSAA。 可以通过增加在一个像素内的采样点。比如说从原来的一个增加到四个。这样对于图元内部的像素,还是图元的颜色。在图元边缘上的像素,在图元内部的采样点就是图元的颜色,反之不是。然后再对这四个采样点进行求平均值。这样,对于每一个像素,还是调用了一次着色器,性能并没有过多消耗。只是颜色缓冲增加为原来的四倍。

离屏渲染MSAA,就是现在帧缓冲里绘制好了之后,把帧缓冲里的图像再转到屏幕上的帧缓冲里。

帧缓冲的操作是:先绑定一个多重采样的颜色缓冲附件,然后在渲染到渲染缓冲对象的时候,指明是多重采样。

但是这样得到的纹理不能直接拿来用,因为采样点比普通的图像要多。

所以在帧缓冲进行转换的时候,要做一步还原。多重采样帧缓冲的还原通常是通过glBlitFramebuffer来完成,它能够将一个帧缓冲中的某个区域复制到另一个帧缓冲中,并且将多重采样缓冲还原。

当然,如果直接把多重采样的帧缓冲的纹理输出来做一个后期处理(在着色器里),也是可以的。  

没完全明白多重采样的帧缓冲转换到普通帧缓冲,以及多重采样的帧缓冲的纹理输出有什么区别?   不都是把帧缓冲里的颜色输出吗?   我想到的唯一区别是,纹理输出只是输出了一个纹理,但是帧缓冲转换,可以保留帧缓冲的颜色附件和渲染缓冲对象?

在着色器里纹理uniform采样器设置为sampler2DMS,而不是平常使用的sampler2D:使用texelFetch函数就能够获取每个子样本的颜色值了。

LearnOpenGL——抗锯齿 关于抗锯齿技术的原理可以参考另外一篇笔记。 阅读详情

相关推荐

MSAA 的基本原理

Multi-sample Anti-Aliasing(MSAA)是DirectX内部集成的一种AA方法,类似于SSAA,它会在更细的精度上采样pixel,从而减少三角形边缘的锯齿。 MSAA的基本原理如下: 上图中,黑色方块代表了一个pixel,中间的圆点代表了这个pixel的中心,其余的四个叉是采样的位置,称之为sample吧(这些位置一般是由硬件自己实现的)。三角形在光栅化的时候,只要

codeboycjy的专栏 1万+

opengl之抗锯齿(有用到帧缓冲)

官方文档 openglCN之抗锯齿 抗锯齿 结合图形学内容 抗锯齿(Anti-aliasing,也被称为反走样) 超采样抗锯齿(Super Sample Anti-aliasing, SSAA)的技术,它会使用比正常分辨率更高的分辨率(即超采样)来渲染场景,当图像输出在帧缓冲中更新时,分辨率会被下采样(Downsample)至正常的分辨率。 多重采样抗锯齿(Multisample Anti-aliasing, MSAA) 多重采样 OpenGL光栅器:栅器会将一个图元的所有顶点作为输入,并将它转换为

wqdqwass的博客 2538

多重采样MSAA的实现

在计算机图形学中,在屏幕上显示对象时,可能会出现许多的“锯齿”,这些锯齿是由顶点数据像素化之后成为片段的方式所引起的,由于将数学意义上的坐标转换到物理的显示器硬件上进行显示,显示器是有一个个像素点构成的,并不能实现数学意义上的“无限小”的描述。不过,实际工业上应用时,增加的采样点并不是规则分布在每个像素内的,而是会按照特定的图案;只计算每个像素的颜色,而对于那些子采样点只计算一个覆盖信息和遮挡信息来把像素的颜色信息写到每个子采样点里面,最终根据子采样点里面的颜色值来通过某个重建过滤器来降采样生成目标图像。

一只可爱的小猴子的博客 1578

关于支持多重采样的FBO和Texture

闲话不唠,简单粗暴版。   简单提一句MSAA(Multisample Anti Aliasing),依本人愚见,MSAA就是光栅化阶段对一个像素内部进行多次采样(采4次就是4X,采8次就是8X多重采样),然后根据按照一定规则(默认是取平均值)将同一个像素内的多个采样点融合成一个的过程(resolve 过程)。   先讲简单的版本,从OpenGL的使用角度上讲,多重采样可以分为两种,conte...

weixin_30339457的博客 238

OpenGL MSAA:抗锯齿技术详解

抗锯齿 anti-aliasing 一 概念 有时候OpenGL渲染出来的物体,其边缘会出现锯齿,显得很不丝滑。说白了,使物体在渲染时保持边缘丝滑而不出现锯齿的技术,就叫做抗锯齿。常用的技术是SSAA和MSAA,MSAA是SSAA的演进技术,全称是多采样点抗锯齿 multisampler anti-aliasing,本文主要介绍MSAA. 二 MSAA原理 片段着色器携带顶点数据运行时,将数据插入到像素的中心,MSAA随后使用一个很大的的带有设置了子采样点的深度/模板缓冲去选择哪些子采样点被覆盖,然

aDiligentCigarette的博客 3280

OpenGL多重采样抗锯齿(MSAA)的实例编程

在计算机图形学中,抗锯齿是一种常用的技术,旨在减少图像中出现的锯齿状边缘,以提高图形的平滑度和真实感。多重采样抗锯齿(MSAA)是一种常见的抗锯齿技术,它通过对每个像素进行多次采样并进行平均来减少锯齿效果。在本文中,我们将探讨如何在OpenGL中实现MSAA,并提供相应的源代码示例。在渲染循环中,我们首先清空屏幕颜色缓冲区,然后绑定着色器程序和顶点数组对象,绘制三角形,最后解析帧缓冲区并将结果显示在窗口中。然后,我们创建了一个窗口,并在窗口中渲染一个简单的三角形。希望这个示例对你有所帮助!

CyberByte的博客 564

【OpenGL】多重采样案例MSAA

示例图暂缺(目前运行exe失败,后期补充) 本文比较难,个人来说还不是完全弄懂。 #version 150 // hdr_bloom.vs // outputs MVP transformed position // passes texture coordinates through // color is * by normal and passed on. in vec3 vVertex; in vec3 vNormal; in vec2 vTexCoord0; uniform mat.

两水先木示的博客 928

OpenGL实现多重采样抗锯齿效果

在本篇文章中,我们将演示如何使用OpenGL实现多重采样抗锯齿效果。然后,我们将设置多重采样模式,并使用多重采样缓冲区进行渲染。在上面的示例代码中,我们使用glfwWindowHint()函数设置多重采样模式,并在创建OpenGL窗口时传递这个参数。需要注意的是,为了使用多重采样缓冲区,我们需要创建一个附带多重采样的帧缓冲区对象。此处为了简化,我们没有展示完整的多重采样缓冲区设置过程,读者可自行深入探究。本篇文章演示了如何使用OpenGL实现多重采样抗锯齿效果,并提供了示例代码。

qq_39605374的博客 735

重新思考神经网络的平移不变性:反锯齿下采样论文复现

Making Convolutional Networks Shift-Invariant Again,反锯齿下采样改进网络平移不变性

m0_63642362的博客 422

【我的OpenGL学习进阶之旅】收集到的关于如何在OpenGL ES上使用MSAA(Multisample Anti-aliasing)实现抗锯齿效果的资料和源码

在OpenGL ES平台上使用MSAA实现抗锯齿效果

字节卷动 1541

OpenGL多重采样技术深入解析与应用

OpenGL作为领先的图形API(应用程序接口),为开发者提供了强大的工具集以进行三维图形的渲染和处理。多重采样(Multisampling)是OpenGL中一个重要的概念,它通过在像素周围采样多个点来实现抗锯齿效果,从而提升最终图像的质量。在本章中,我们将定义多重采样的基本概念并探索其功能。首先,我们会解释“采样”和“多重采样”的具体含义,接着讨论它如何在图形处理中发挥作用。我们将了解到,多重采样不仅可以改善图像边缘的锯齿效果,还可以优化纹理贴图、阴影等图形元素的平滑度。

weixin_35972981的博客 1120

计算机图形学----采样和锯齿

采样产生的问题 走样 摩尔纹 本质上,走样的原因是,信号变化太快,采样的速度跟不上变化的速度。 反走样的方法: 先对三角形进行模糊,再进行采样。 反走样之前: 反走样之后: 频域 正弦函数和余弦函数 用周期(或者频率)定义余弦的变化快慢 傅里级数展开: 傅里叶变换: 按照一定的频率采样,并且把采样点连起来。再把采样点连接起来 采样失真: 滤波 傅里叶变换:时域—>频域 右侧主要集中在低频,中间亮。 去掉一些频率的内容,就叫做滤波 下图滤波滤去掉低频的东西,这种滤波叫做高通滤波。高

VIPCCJ的博客 1043

TMC2209串口配置实战:从寄存器解析到电机精准控制

本文详细解析TMC2209步进电机驱动芯片的串口配置方法,从硬件连接到UART通信协议,再到核心寄存器功能详解。通过实战案例展示电流控制、微步细分和速度调节等关键配置,帮助工程师实现电机精准控制,并提供了常见故障诊断和优化技巧。

f6g7h8i9j的博客 1176

MSAA的理解(个人向)

MSAA流程的疑问和个人理解

JMXIN422的博客 2460

在 Kubernetes 上部署 Label Studio

Label Studio 是一款开源的数据标注工具,支持多种标注任务,如文本标注、图像标注、音频标注等。

啥都会一点 669

pyinstaller+scrapy打包出现错误:OSError: could not get source code

错误如下: Traceback (most recent call last): File "scrapy\utils\defer.py", line 55, in mustbe_deferred File "scrapy\core\spidermw.py", line 60, in process_spider_input File "scrapy\core\scraper.py", line 152, in call_spider File "scrapy\utils\misc.py

kin的博客 1760

抗锯齿相关技术介绍:MSAA、FXAA、SMAA、TXAA、MSAA

在图像处理中,锯齿一直是一个大问题,因此图像中的抗锯齿(Anti_aliaing,简称AA),也被称为边缘柔化、消除混叠、抗图像折叠有损等。AA主要是处理图像有锯齿的边缘,使其图像更清晰清晰。下面有一些反锯齿的常用技术: 一、多重采样抗锯齿(MSAA) 多重采样抗锯齿(MultiSampling Anti-Aliasing,简称MSAA),这是一种在OpenGL中的特殊的超级采样抗锯齿(...

MumuziD的博客 4万+

Python自动化测试全套教程-第一天(python、pycharm开发环境的安装与配置(图文超级详细);附安装包)

本文介绍了Python开发环境的完整安装配置流程。主要内容包括:1) Python解释器的下载安装与版本检测方法;2) PyCharm IDE的下载安装步骤,包括专业版和社区版的选择;3) PyCharm的基础配置和项目创建方法;4) 开发环境的基本构造说明。文章提供了两种获取安装包的方式(官网下载和文章附件),并详细说明了解释器卸载、安装过程中的注意事项,以及如何验证环境配置成功。特别强调了PyCharm安装时的路径选择和虚拟环境的创建方法,为Python初学者提供了完整的开发环境搭建指南。

kiwi_king的博客 2035

opengl抗锯齿之多重采样抗锯齿MSAA

抗锯齿技术的目标是减少或消除图形渲染中常见的锯齿效应(Alias)。锯齿通常出现在渲染斜线或曲线时,因为显示设备的像素网格限制了细节的精度。多重采样抗锯齿(MSAA,Multi-Sample Anti-Aliasing)是一种通过增加每个像素的采样数来减少锯齿的技术。在多重采样中,OpenGL 并不是在单一的像素位置进行采样,而是对每个像素的多个子位置进行采样,计算它们的平均值。这种方法通常可以大大减少锯齿效果,并且在性能开销上比其他更复杂的抗锯齿方法(如超级采样抗锯齿,SSAA)要高效得多。

qq_40622955的博客 2660

工业缺陷检测深度学习方法综述

异常:点异常、 上下文异常和集群异常。点异常:又称为离群值 (outliers)[9], 描述数值上偏离正 常样本的独立数据。与异常相近的概念还包括新颖点(novelty)和分布外数据。上下文异常:同样描述数据点,其数值属于正常范围,但不符合局部上下文规律。集群异常:描述一系列相关数据的集合,集合中的每一个实例的数值在单独考察时都处于正常值域,但集 合整体的相关性特征不服从正常模式。一般的图像异常检测往往仅需区分正常与异常样本,而工业缺陷检测更关注于检测 图像中的异常像素.

2301_80355452的博客 1844

2.13寸电子墨水屏HINK-E0213+esp8266

很久以前买的一块电子墨水屏,运气很好,这个型号HINK-E0213资料很全,而且微雪官网也有相关电路资料等。

梦境虽美,却不长. 3005

反走样算法(MSAA、TAA、FXAA、DLSS)

光栅化的采样过程会导致图形走样,走样有很多种形式:锯齿摩尔纹走样的本质原因是采样频率低,使得我们将连续变化的信号离散化.

Law of Conservation of Eudaemonia 3649

PC 端微信页面拆分及 JavaFx 使用

一、前言 对于一个知识点的学习过程来说,往往使用自己熟悉的工具或方式才更易于上手。因为所有同类型的知识点在抛出复杂的流程拨云见日后,所能得到的几乎都是同样的设计思想和实现理论。 在 Java 语言桌面版开发中,直至目前共提供了三套 UI 开发方式;Awt、Swing、JavaFx,以及一些扩展组件 SWT 等。在这三套 UI 组件中,JavaFx 是最新也是最为好用的,因为他提供了丰富的功能,以及...

bugstack虫洞栈 3611

深入剖析MSAA

本文打算对MSAA(Multisample anti aliasing)做一个深入的讲解,包括基本的原理、以及不同平台上的实现对比(主要是PC与Mobile)。为了对MSAA有个更好的理解,所以写下了这篇文章。当然文章中难免有错误之处,如有发现,还请指证,以免误导其他人。好了,废话不多说,下面我们开始正文。 MSAA的原理 Aliasing(走样) 在介绍MSAA原理之前,我们先对走样...

weixin_30607659的博客 1355

ABAP CDS 视图的 SAP 缓冲全解析:从 DDIC-based 到 View Entity Buffer 的最佳实践与可运行示例

本文深入探讨了SAP ABAP CDS视图中的缓冲机制,重点介绍了在DDIC-based CDS视图中使用@AbapCatalog.buffering.*注解以及在CDS View Entity中使用独立缓冲对象两种配置方式。文章首先阐述了SAP缓冲的价值,特别适用于读多写少的业务场景(如主数据访问),能够显著降低数据库负载和响应延迟。核心内容分为三部分:1)DDIC-based CDS视图中的三个关键注解(缓冲状态、缓冲类型和通用缓冲键字段数)及其使用限制;2)新一代CDS View Entity中通过独

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 188

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

OpenGL抗锯齿优化及部分函数说明

抗锯齿是图形学中的一个重要概念,它指的是消除或减少图像中的锯齿现象,也就是边缘不平滑的现象。锯齿现象会影响图像的质量和真实感,所以在游戏或视频中,通常会使用一些抗锯齿算法来提高画面的美观度。抗锯齿算法有很多种,其中比较常见的有FXAA、SMAA、MSAA、TAA等。这些算法各有优缺点,适用于不同的场景和需求。本文将主要介绍两种抗锯齿算法:TAA和FXAA,并比较它们的区别。

可不期诺的博客 2266

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

上一篇: 【杂记】OpenGL实例化
下一篇: 【杂记】Windows回调函数和句柄概念
程序员菜鸟
博客等级 码龄9年 77粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值