一、实验目的
1.理解多视区在 OpenGL 中的概念与应用场景,掌握视区划分的原理。
2.熟练运用glViewport函数实现窗口内多个独立视区的创建与管理。
3.掌握在多视区中分别绘制图形、设置不同显示模式(线框、填充)的方法,理解视区与图形渲染的关联逻辑。
4.深入理解二维观察变换的三个关键步骤(指定矩阵堆栈、裁剪窗口、视区),明确坐标变换在多视区场景中的作用。
二、实验内容
通过 OpenGL 编程,在一个窗口内创建两个独立视区,分别在两个视区中绘制具有相同坐标但不同显示模式(线框、填充)和颜色的三角形,以此验证多视区的独立渲染能力,同时巩固二维观察变换的流程。
三、实验代码

- 实验结果
程序运行后将生成一个标题为 "多视区" 的窗口,窗口被划分为左右两个独立视区:
左侧视区(位置 (0,0),大小 200x200):显示红色线框三角形,三角形以轮廓形式呈现。
右侧视区(位置 (200,0),大小 200x200):显示蓝色填充三角形,三角形以实心形式呈现。
两个视区的三角形坐标逻辑一致,但因显示模式和颜色的差异,视觉效果完全独立,验证了多视区的独立渲染能力,与教材图效果一致

- 实验心得
本次实验从多维度加深了对 OpenGL 多视区技术的理解。技术原理上,明确glViewport函数是多视区实现的核心,通过指定屏幕矩形区域划分出多个 "虚拟子窗口";同时掌握二维观察变换的三步流程 ------ 指定GL_PROJECTION矩阵堆栈、用gluOrtho2D设置裁剪窗口、用glViewport设置视区,这是图形正确映射的关键。编程实践中,熟练运用 "切换视区→设置属性→绘制图形" 的流程,理解glPolygonMode对线框 / 填充模式的控制,认识到该技术可用于数据对比、多视角预览等多模块可视化场景。效果认知上,通过对比视区图形,直观体会多视区 "同一空间、不同表现" 的优势,也意识到视区参数与图形属性对视觉呈现的直接影响,需按需调控。综上,实验深化了理论认知,提升了分区渲染能力,为复杂场景开发奠定基础。