OpenGL代码学习(9)--裁剪
注意:需要在配置好OpenGL的编程环境中运行下列代码,环境配置文章可参考:
OpenGL在Mac项目上的配置
下面的代码,直接放置在main.cpp文件中即可:
#include "GLTools.h" #include <GLUT/GLUT.h> // 渲染画面 void RenderScene(void) { // 设置颜色缓冲区背景色为蓝色 glClearColor(0.0f, 0.0f, 1.0f, 0.0f); // 清空颜色缓冲区,设置到后台缓冲区,执行完这步才绘制了背景颜色 glClear(GL_COLOR_BUFFER_BIT); // 开启裁剪 glEnable(GL_SCISSOR_TEST); // 设置颜色缓冲区背景色为红色 glClearColor(1.0f, 0.0f, 0.0f, 0.0f); // 裁剪出(x:100, y:100, w:600, h:400)区域 glScissor(100, 100, 600, 400); // 清空颜色缓存区,设置到后台缓冲区,注意这里会设置的是裁剪区域 glClear(GL_COLOR_BUFFER_BIT); // 设置颜色缓冲区背景色为绿色 glClearColor(0.0f, 1.0f, 0.0f, 0.0f); // 裁剪出(x:200, y:200, w:400, h:200)区域 glScissor(200, 200, 400, 200); // 清空颜色缓存区,设置到后台缓冲区,注意这里会设置的是裁剪区域 glClear(GL_COLOR_BUFFER_BIT); // 关闭裁剪 glDisable(GL_SCISSOR_TEST); // 将在后台缓冲区进行渲染,然后在结束时交换到前台 glutSwapBuffers(); } // 窗口大小改变时接受新的宽度和高度 void ChangeSize(int w, int h) { // 设置视图窗口位置 glViewport(0, 0, w, h); } // 程序入口 int main(int argc, char *argv[]) { // 设置当前工作目录,针对Mac OS X gltSetWorkingDirectory(argv[0]); // 初始化GLUT库 glutInit(&argc, argv); /* 初始化渲染模式,其中标志GLUT_DOUBLE、GLUT_RGBA、GLUT_DEPTH、GLUT_STENCILf分别指双缓冲窗口、RGBA颜色模式、深度测试、模板缓冲区 */ glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA); // 初始化窗口大小 glutInitWindowSize(800, 720); // 创建窗口 glutCreateWindow("OpenGL Scissor"); // 注册回调函数 glutReshapeFunc(ChangeSize); glutDisplayFunc(RenderScene); // 确保驱动程序的初始化中没有出现任何问题 GLenum err = glewInit(); if (err != GLEW_OK) { fprintf(stderr, "glew error:%s\n", glewGetErrorString(err)); return 1; } // 进入调用循环 glutMainLoop(); return 0; }
代码运行后的效果图: