(10条消息) OpenGL中viewport和 scissor test的问题_sfesly的专栏-CSDN博客
- 剪裁测试用于限制绘制区域。我们可以指定一个矩形的剪裁窗口,当启用剪裁测试后,只有在这个窗口之内的像素才能被绘制,其它像素则会被丢弃。
glEnable(GL_SCISSOR_TEST); // 启用剪裁测试
glDisable(GL_SCISSOR_TEST); // 禁用剪裁测试
- 可以通过下面的代码来指定一个位置在(x, y),宽度为width,高度为height的剪裁窗口。glScissor(x, y, width, height);
- 注意,glScissor窗口坐标是以左下角为(0, 0),右上角为(width, height)的,这与Windows系统窗口有所不同。
- Demo使用裁剪区来将矩形窗口正中间四分之一刷成红色,正中间十六分之一刷成绿色。
//使能裁剪区\
glEnable(GL_SCISSOR_TEST);
//将窗口中间的四分之一面积清空为红色
glClearColor(1.0f, 0.0f, 0.0f, 0.0f);
glScissor(windowWidth/4,windowHeight/4, windowWidth/2,windowHeight/2);\
glClear(GL_COLOR_BUFFER_BIT);
//将窗口中间的十六分之一面积清空为绿色
glClearColor(0.0f, 1.0f, 0.0f, 0.0f);
glScissor(windowWidth*3/8,windowHeight*3/8, windowWidth/4,windowHeight/4);\
glClear(GL_COLOR_BUFFER_BIT);\
//禁止裁剪区
glDisable(GL_SCISSOR_TEST);