glViewport()函数和glOrtho()函数的理解_shizhipeng的博客
文章推薦指數: 80 %
glOrtho是创建一个正交平行的视景体。
一般用于物体不会因为离屏幕的远近而产生大小的变换的情况。
比如,常用的工程中的制图等。
需要 ...
glViewport()函数和glOrtho()函数的理解
shizhipeng
于 2009-12-0413:11:00 发布
51208
收藏
52
分类专栏:
OpenGL
文章标签:
include
buffer
ubuntu
build
生活
编程
版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shizhipeng/article/details/4939529
版权
OpenGL
专栏收录该内容
2篇文章
0订阅
订阅专栏
在OpenGL中有两个比较重要的投影变换函数,glViewport和glOrtho.glOrtho是创建一个正交平行的视景体。
一般用于物体不会因为离屏幕的远近而产生大小的变换的情况。
比如,常用的工程中的制图等。
需要比较精确的显示。
而作为它的对立情况,glFrustum则产生一个透视投影。
这是一种模拟真是生活中,人们视野观测物体的真实情况。
例如:观察两条平行的火车到,在过了很远之后,这两条铁轨是会相交于一处的。
还有,离眼睛近的物体看起来大一些,远的物体看起来小一些。
glOrtho(left,right,bottom,top,near,far),left表示视景体左面的坐标,right表示右面的坐标,bottom表示下面的,top表示上面的。
这个函数简单理解起来,就是一个物体摆在那里,你怎么去截取他。
这里,我们先抛开glViewport函数不看。
先单独理解glOrtho的功能。
假设有一个球体,半径为1,圆心在(0,0,0),那么,我们设定glOrtho(-1.5,1.5,-1.5,1.5,-10,10);就表示用一个宽高都是3的框框把这个球体整个都装了进来。
如果设定glOrtho(0.0,1.5,-1.5,1.5,-10,10);就表示用一个宽是1.5,高是3的框框把整个球体的右面装进来;如果设定glOrtho(0.0,1.5,0.0,1.5,-10,10);就表示用一个宽和高都是1.5的框框把球体的右上角装了进来。
上述三种情况可以见图:
从上述三种情况,我们可以大致了解glOrtho函数的用法。
---glViewport():glOrtho函数只是负责使用什么样的视景体来截取图像,并不负责使用某种规则把图像呈现在屏幕上。
glViewport主要完成这样的功能。
它负责把视景体截取的图像按照怎样的高和宽显示到屏幕上。
比如:如果我们使用glut库建立一个窗体:glutInitWindowSize(500,500);然后使用glutReshapeFunc(reshape);reshape代码如下:voidreshape(intwidth,intheight){ glViewport(0,0,(GLsizei)width,(GLsizei)height); glMatrixModel(GL_PROJECTION); glLoadIdentity(); glOrtho(-1.5,1.5,-1.5,1.5,-10,10);
....}这样是可以看到一个正常的球体的。
但是,如果我们创建窗体时glutInitWindowSize(800,500),那么看到的图像就是变形的。
上述情况见图。
因为我们是用一个正方形截面的视景体截取的图像,但是拉伸到屏幕上显示的时候,就变成了glViewport(0,0,800,500);也就是显示屏变宽了,倒是显示的时候把一个正方形的图像“活生生的给拉宽了”。
就会产生变形。
这样,就需要我们调整我们的OpenGL显示屏了。
我们可以不用800那么宽,因为我们是用的正方形的视景体,所以虽然窗体是800宽,但是我们只用其中的500就够了。
修改一下程序。
voidreshape(intwidth,intheight){ intdis=width
一般用于物体不会因为离屏幕的远近而产生大小的变换的情况。
比如,常用的工程中的制图等。
需要比较精确的显示。
而作为它的对立情况,glFrustum则产生一个透视投影。
这是一种模拟真是生活中,人们视野观测物体的真实情况。
例如:观察两条平行的火车到,在过了很远之后,这两条
复制链接
扫一扫
专栏目录
OpenGL的glViewPort窗口设置函数实现分屏
xuerongdeng的专栏
12-30
721
OpenGL的glViewPort窗口设置函数实现分屏
之前实现过全景图片查看(OpenGL的几何变换3之内观察全景图),那么我们需要进行分屏该如何实现呢?如下图:
没错就是以前提过的glViewPort函数,废话不多说了,我直接上代码:
1//从这里开始进行所有的绘制
2voiddrawCube(void)
3{
4glClear(GL_COLOR...
glViewport()与glOrtho()函数的理解.doc
04-01
glViewport()与glOrtho()函数的理解glViewport()与glOrtho()函数的理解glViewport()与glOrtho()函数的理解glViewport()与glOrtho()函数的理解
评论 30
您还未登录,请先
登录
后发表或查看评论
OpenGL视口变换函数:glViewport
24K程序猿
10-26
1502
调用glViewPort函数来决定视见区域,告诉OpenGL应把渲染之后的图形绘制在窗体的哪个部位。
当视见区域是整个窗体时,OpenGL将把渲染结果绘制到整个窗口。
glViewPort(x:GLInt;y:GLInt;Width:GLSizei;Height:GLSizei);
其中,参数X,Y指定了视见区域的左下角在窗口中的位置,一般情况下为(0,0),Width和Height
OpenGL之glViewPort函数的用法
热门推荐
草上爬的博客
05-10
2万+
其函数原型为:glViewport(GLintx,GLinty,GLsizeiwidth,GLsizeiheight)x,y以像素为单位,指定了视口的左下角位置。
width,height表示这个视口矩形的宽度和高度,根据窗口的实时变化重绘窗口。
在默认情况下,视口被设置为占据打开窗口的整个像素矩形,窗口大小和设置视口大小相同,所以为了选择一个更小的绘图区域,就可以用glViewport函...
opengl-glortho理解
最新发布
haoxiangnia111的博客
09-09
565
left表示视景体左面的坐标,即opengl的中心点向左偏移。
right表示右面的坐标,即opengl的中心点向右偏移。
bottom表示下面的,即opengl的中心点向下偏移。
top表示上面的即opengl的中心点向上偏移。
opengl中对glOrtho()函数的理解
weixin_33696822的博客
08-14
611
glOrtho是创建一个正交平行的视景体。
一般用于物体不会因为离屏幕的远近而产生大小的变换的情况。
比如,常用的工程中的制图等。
需要比较精确的显示。
而作为它的对立情况,glFrustum则产生一个透视投影。
这是一种模拟真是生活中,人们视野观测物体的真实情况。
例如:观察两条平行的火车到,在过了很远之后,这两条铁轨是会相交于一处的。
还有,离眼睛近的物体看起来大一些,远的物体看起来小一些。
...
小谈glOrtho(一)
小鸡炖技术
02-28
1633
经过了自己的反复测试,对glOrtho这个函数有了一定的了解,下面如果有说错,请大家多加指正。
首先,我们看看glOrtho这个函数的形参是怎么样的,不同书本不同,主要有两个版本:
glOrtho(GLDoubleleft,GLDoubleright,GLDoublebottom,GLDoubletop,GLdoublenear,GLdoublefar);
glViewport
wuxinliulei的专栏
06-16
2463
#include
//函数RenderScene用于在窗口中绘制需要的图形
voidRenderScene(void)
{
//用当前清除色清除颜色缓冲区,即设定窗口的背景色
glClear(GL_COLOR_BUFFER_BIT);
//设置当前绘图使用的RGB颜色
glColor3f(1.0f,0.0f,0.0f);
//使用当前颜色绘制一个填充的矩形
g
OpenGL的glViewport()函数和glOrtho()函数用法
sj19890401
02-26
8267
glViewport()函数
在OpenGL初始化完成之后,我们应该进行一些视图设置。
首先是设定视见区域,即告诉OpenGL应把渲染之后的图形绘制在窗体的哪个部位。
当视见区域是整个窗体时,OpenGL将把渲染结果绘制到整个窗口。
我们调用glViewPort函数来决定视见区域:
procedureglViewPort(x:GLInt;y:GLInt;Width:GLSizei;
OpenGL入门纪录--视口变换函数glViewPort函数用法
阿a楞的博客
07-11
7289
其函数原型为:glViewport(GLintx,GLinty,GLsizeiwidth,GLsizeiheight)
x,y以像素为单位,指定了视口的左下角位置。
width,height表示这个视口矩形的宽度和高度,根据窗口的实时变化重绘窗口。
在默认情况下,视口被设置为占据打开窗口的整个像素矩形,窗口大小和设置视口大小相同,所以为了选择一个更小的绘图区域,就可以用g
OpenGLglViewport()函数
mozhi
12-21
3201
1.glViewport()用来设置视口大小
voidglViewport(GLintx,GLinty,GLsizeiwidth,GLsizeiheight);
对于一个OpenGL坐标(xnd,ynd),它变换后的坐标为(Xw,Yw),那么变换公式为
解释一下这个公式的意义:视口变换也就是glViewport()做的工作,它是把OpenGL的标准化设备坐标转换为屏幕空间坐...
OpenGL之深入解析坐标系统
╰つ栺尖篴夢ゞ
07-04
460
坐标系
2D笛卡尔坐标系(由x、y决定)
3D笛卡尔坐标系(由x、y、z决定)
视口
glViewport(GLintx,GLinty,GLsizeiwidth,GLsizeiheight),对应屏幕区域的范围;
投影
透视投影和正投影
qtopengl窗口变化时物体大小保持不变
toTheUnknown的博客
02-27
1272
可以重写resizeGL函数,并在其中根据窗口的大小重新生成投影矩阵,如:
//OpenGLWidget继承QOpenGLWidget和QOpenGLFunctions_4_0_Core
voidOpenGLWidget::resizeGL(intwidth,intheight)
{
glViewport(0,0,width,height);
QM...
【OpenGL】glViewport函数在同一窗口显示多个视图
xiaobo_duanfei的专栏
06-18
5009
在OpenGL中,我们可以用glViewport()函数创建多个视口,在一个窗口中同时显示。
glViewport函数:
voidglViewport(GLint x,
GLint
y,
GLsizei
width,
GLsizei
height);
在窗口中定义一个矩形区域,最终的图像将映射到这个矩形中。
(x,y)指定了视
(7)OpenGL多视口变换函数:glViewport使用
ysu341341的博客
08-30
1650
OpenGL多视口变换函数:glViewport使用
glViewport是OpenGL中的一个函数。
计算机图形学中,在屏幕上打开窗口的任务是由窗口系统,而不是OpenGL负责的
1.功能glViewport在默认情况下,视口被设置为占据打开窗口的整个像素矩形,如图1,窗口大小和设置视口大小相同,所以为了选择一个更小的绘图区域,就可以用glViewport函数来
glOrtho
chuibb001的专栏
03-26
719
函数简介
使用glOrtho[1]函数可以将当前的可视空间设置为正投影空间。
基参数的意义如图,如果绘制的图空间本身就是二维的,可以使gluOrtho2D.他的使用类似于glOrtho.
函数用途
设置或修改修剪空间的范围
句法
voidglOrtho(GLdoubleleft,GLdoubleright,GLdoublebottom,GLdoubletop,
glViewport含义
wyyy2088511的博客
11-03
557
glViewport(GLintx,GLinty,GLsizeiwidth,GLsizeiheight)为其函数原型。
X,Y————以像素为单位,指定了视口的左下角(在第一象限内,以(0,0)为原点的)位置。
width,height————表示这个视口矩形的宽度和高度,根据窗口的实时变化重绘窗口。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
shizhipeng
CSDN认证博客专家
CSDN认证企业博客
码龄17年
暂无认证
17
原创
14万+
周排名
183万+
总排名
11万+
访问
等级
987
积分
19
粉丝
46
获赞
31
评论
58
收藏
私信
关注
热门文章
glViewport()函数和glOrtho()函数的理解
51206
误删libc.so.6的解决方法
15364
ubuntu下gcc的默认的环境变量路径
13063
ffmpegbuildwithxvid
3542
Windows10连接到Windows7远程桌面提示你的凭据不工作
3384
分类专栏
江湖兴趣
2篇
C/C++
2篇
Linux
3篇
OpenGL
2篇
Windows
1篇
最新评论
glViewport()函数和glOrtho()函数的理解
dagunliyu123:
极好!!
glViewport()函数和glOrtho()函数的理解
rjyyqf:
谢谢,看完之后理解的很清楚,但我调试的时候有个问题
[code=csharp]
voidreshape(intwidth,intheight)
{
intdis=width
延伸文章資訊
- 1How to use glOrtho() in OpenGL? - Stack Overflow
The glOrtho command produces an "Oblique" projection that you see in the bottom row. No matter ho...
- 2glortho - OSCHINA - 中文开源技术交流社区
OpenGL函数思考-glOrtho 函数原型: void glOrtho(GLdouble left,GLdouble right,GLdouble bottom ... 在OpenGL中有两...
- 3如何使glOrtho 平行六面體旋轉? (How can I ... - CoderBridge
問題描述如何使glOrtho 平行六面體旋轉? (How can I make the glOrtho parallelepiped rotating?) I have my world ren...
- 4glOrtho 函式(Gl.h) - Win32 apps | Microsoft Learn
glOrtho函式描述產生平行投影的透視矩陣。 (左、下、近) 和(右、上、近) 參數,分別指定對應至視窗左下角和右上角的近裁剪 ...
- 5glOrtho_百度百科