抗锯齿 anti-aliasing
本文来自对learnopengl.com上教程的个人总结
一 概念
有时候OpenGL渲染出来的物体,其边缘会出现锯齿,显得很不丝滑。说白了,使物体在渲染时保持边缘丝滑而不出现锯齿的技术,就叫做抗锯齿。常用的技术是SSAA和MSAA,MSAA是SSAA的演进技术,全称是多采样点抗锯齿 multisampler anti-aliasing,本文主要介绍MSAA.
二 MSAA原理
片段着色器携带顶点数据运行时,将数据插入到像素的中心,MSAA随后使用一个很大的的带有设置了子采样点的深度/模板缓冲去选择哪些子采样点被覆盖,然后将像素按照--覆盖的子采样点数/总采样点数 的比例,混合到默认帧缓冲区framebuffer中,成为输出像素的一部分。
三 用法
1 设置像素的子采样点 subsamples
需要是采样点缓冲区来保存采样点,而GLFW提供了一个多采样点缓冲:
glfwWindowHint(GLFW_SAMPLES, 4);//每个像素有4个子采样点
当调用glfwWindowHint创建窗口时,每个屏幕坐标缓冲中包含4个子采样点。
2 开启抗锯齿功能
glEnable(GL_MULTISAMPLE);// OpenGL一般默认开启
3 因为光栅化程序已实现抗锯齿,所以我们设置完子采样点后,看戏就行了。
四 真·用法
要设置自己的多采样点缓冲区,需要两个方法:纹理附加项和渲染缓冲附加项,就像一般的附加项一样。
1 作为多采样点的纹理附加项 Multi