OpenGL窗口,视口,裁剪区域
创始人
2024-06-02 03:05:08
0

在OpenGL中,窗口、视口和裁剪区域是三个不同的概念,它们分别用于描述不同的坐标系统和渲染流程。

窗口(Window):指的是OpenGL显示的窗口区域,它由操作系统负责创建和管理。窗口通常包括标题栏、边框和客户区域(也称为工作区),客户区域是OpenGL用于显示图形的区域。窗口的坐标系统通常是屏幕坐标系,以窗口左上角为原点,横向向右为正方向,纵向向下为正方向。
glutInitWindowSize(800, 600);//规定了窗口大小,w=800,h=600
视口(Viewport):指的是OpenGL用于渲染的输出区域,它是窗口中的一个矩形区域。在渲染过程中,OpenGL会将图形投影到视口中,以生成最终的图像。视口通常可以通过glViewport函数进行设置,它的坐标系统是以视口左下角为原点,横向向右为正方向,纵向向上为正方向的笛卡尔坐标系。
glViewport(0, 0, 800, 300);//规定了视口,在屏幕的下半部分w=800,h=300
裁剪区域(Clipping Region):指的是OpenGL进行渲染时使用的裁剪空间中的一个区域。裁剪空间是在顶点着色器中进行顶点变换后得到的坐标系,它通常是一个4维齐次坐标系。裁剪区域由6个平面所定义,这6个平面分别对应了视锥体的6个面。在渲染过程中,OpenGL会将裁剪空间中的图形裁剪到裁剪区域内,以生成最终的图像。
void glScissor(GLint x, GLint y, GLsizei width, GLsizei height);
该函数有四个参数:x、y、width和height。这四个参数用于指定裁剪区域的位置和大小,其中x和y表示裁剪区域的左下角坐标,width和height表示裁剪区域的宽度和高度。
例子:
glEnable(GL_SCISSOR_TEST);
glScissor(100, 100, 400, 300);

需要注意的是,窗口、视口和裁剪区域是三个不同的概念,它们的坐标系统和渲染流程也不同。在OpenGL中,图形的坐标系经历了多次变换,从对象空间到世界空间、到观察空间、到裁剪空间,最后才映射到视口中进行渲染。理解这些坐标系和变换过程对于OpenGL编程非常重要。
在这里插入图片描述
这个w和h时候后来又拉了一下的。
调用了这个里面的回调函数glutReshapeFunc(ChangeSize);
void ChangeSize(int w, int h)
{
glViewport(0, 0, 800, 300);//规定了视口,在屏幕的下半部分w=800,h=300
}

相关内容

热门资讯

修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
【前端】‘??‘与‘||‘有什... 0 问题 经常写const data = res.data.a ?? ''或者const d...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
牛客计算器的改良(Python... 文章目录1.题目描述2.输入描述:3.输出描述:4.示例15.分析6.代码7.结语 链接࿱...
正大杯|市调大赛|2023备赛... 关键信息 同时随着精细化养宠趋势的深入,宠物消费类目日渐丰富。 本报告通过 Niuco...
QGIS下载在线地图(Goog... 前言 国内外有很多在线地图下载软件,但功能单一,基本上只能下载数据&#x...