opengl超級寶典(第五版)閱讀筆記 4 裁剪
阿新 • • 發佈:2019-01-01
通過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;
}
這裡並不能縮放顯示的圖片,因為所繪製出來的圖案是基於座標的,縮小可能導致不能正常看到圖案。
效果圖如下: