1. 程式人生 > >opengl超級寶典(第五版)閱讀筆記 4 裁剪

opengl超級寶典(第五版)閱讀筆記 4 裁剪

通過glScissor(100, 100, 600, 400)函式可以設定裁剪區域,引數分別為左下角和右上角的座標
當然,別忘記要開啟裁剪測試glEnable(GL_SCISSOR_TEST);

#include <GLTools.h>  // OpenGL toolkit   
#define FREEGLUT_STATIC  //在windows和linux上,使用freeglut靜態版本,需要新增這一行,否則會出現錯誤
#include <glut.h>
#pragma comment(lib,"gltools.lib")//要加上這一行連結一下gltools庫
void RenderScene
(void) { // Clear blue window glClearColor(0.0f, 0.0f, 1.0f, 0.0f); glClear(GL_COLOR_BUFFER_BIT);//填充藍色 // Now set scissor to smaller red sub region glClearColor(1.0f, 0.0f, 0.0f, 0.0f); glScissor(100, 100, 600, 400);//縮小裁剪區域 glEnable(GL_SCISSOR_TEST);//開啟裁剪測試 glClear(GL_COLOR_BUFFER_BIT);//填充紅色 // Finally, an even smaller green rectangle
glClearColor(0.0f, 1.0f, 0.0f, 0.0f); glScissor(200, 200, 400, 200);//縮小裁剪區域 glClear(GL_COLOR_BUFFER_BIT);//填充綠色 // Turn scissor back off for next render glDisable(GL_SCISSOR_TEST);//關閉裁剪測試 glutSwapBuffers(); } /////////////////////////////////////////////////////////// // Set viewport and projection void ChangeSize(int w, int h) { glViewport(0, 0, w, h); } /////////////////////////////////////////////////////////// // Program entry point
int main(int argc, char* argv[]) { glutInit(&argc, argv);//初始化glut glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);//設定雙緩衝 ,rgb顏色格式 glutInitWindowSize(800, 600);//視窗大小 glutCreateWindow("OpenGL Scissor");//視窗標題 glutReshapeFunc(ChangeSize);//註冊視窗大小變化的函式 glutDisplayFunc(RenderScene);//註冊渲染場景的函式; glutMainLoop();//繪製主視窗 return 0; }

這裡並不能縮放顯示的圖片,因為所繪製出來的圖案是基於座標的,縮小可能導致不能正常看到圖案。
效果圖如下:
在這裡插入圖片描述