什么是裁剪?
在OpenGL中提⾼渲染性能的⼀种方式。只刷新屏幕上发生变化的部分,OpenGL允许将要进行渲染的窗口只去指定一个裁剪框。
裁剪的基本原理
⽤于渲染时限制绘制区域,通过此技术可以在屏幕(帧缓冲)指定⼀个矩形区域。启用裁剪测试之后,不在此矩形区域内的⽚元被丢弃,只有在此矩形区域内的片元才有可能进⼊帧缓冲。因此实际达到的效果就是在屏幕上开辟了⼀个⼩窗口,可以在其中进行指定内容的绘制。
实际使用
//1 开启裁剪测试
glEnable(GL_SCISSOR_TEST);
//2 关闭裁剪测试
glDisable(GL_SCISSOR_TEST);
//3 指定裁剪窗口
void glScissor(Glint x, Glint y, GLSize width, GLSize height);
x, y: 指定裁剪框左下角的位置;
width, height: 指定裁剪尺寸
理解窗口、视口和裁剪区域
- 窗口: 就是显示界面
- 视口: 就是窗口中⽤来显示图形的一块矩形区域,它可以和窗口等大,也可以比窗口⼤或者小。只有绘制在视口区域中的图形才能被显示,如果图形有一部分超出了视⼝区域,那么那一部分是看不到的。通过glViewport()函数设置。
- 裁剪区域(平行投影):就是视⼝矩形区域的最小最⼤x坐标(left,right)和最小最大y坐标 (bottom,top),⽽而不是窗口的最小最⼤x坐标和y坐标。通过glOrtho()函数设置,这个函数还需指定最近最远z坐标,形成一个⽴体的裁剪区域。