社区
游戏开发
帖子详情
OpenGL 高手请帮忙关于缩放
zhengyu_chen
2002-09-19 04:18:53
我在程序里缩放,如不停的放大到一定程度会发现物体被裁剪了,该显示的部分。
为什么?请各位说说看法。
...全文
55
6
打赏
收藏
OpenGL 高手请帮忙关于缩放
我在程序里缩放,如不停的放大到一定程度会发现物体被裁剪了,该显示的部分。 为什么?请各位说说看法。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ruixp
2002-09-22
打赏
举报
回复
根据投影矩阵以及视点的位置可以确定能够看到多少景象
shally5
2002-09-20
打赏
举报
回复
gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,1000.0f);//可以将near设为1000就可以啦!
glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
glLoadIdentity(); // Reset The Modelview Matrix
hawkhunter
2002-09-20
打赏
举报
回复
near, far定义的就是你的物体能看见的范围,把他们设为适当的值就可以了。 要注意的是他们的 far-near 的结果也不能过大,因为zbuffer是有精度限制的,如差别过大也会因精度问题导致物体被切。
zhengyu_chen
2002-09-20
打赏
举报
回复
谢谢各位,我的透视投影矩阵是自己写的。可能是near & far的距离太小的缘故。
1,我的缩放是(如放大)设置前后截面的值如ClippingRange[0] = ClippingRange[0]/zoomfactor,ClippingRange[1] = ClippingRange[1]/zoomfactor,zoomfactor> 1;
2,移动观察窗口的位置Position[2] = FocalPosition[2] + Distance/zoomfactor*ViewPlaneNormal[2]; FocalPosition就是VRP。
我现在不知near和far的距离要多大才能保证好。我假如第1步不做即保持ClippingRange不变,只改变Position发现不停放大后物体靠近我们人的部分被截去。
还是希望各位讲的再清楚点。非常感谢。
Lem0n
2002-09-19
打赏
举报
回复
因为OpenGL里面有一个视图体的概念,设置的相关的命令:
glFrustum()定义一个透视投影矩阵。棱台的四面及其顶和底对应于视图体的6个截剪面。在视图体外的物体和物体的一部分被裁减掉。此外,他不要求指定对称的视图体。其中的参数:left right:指定左右垂直裁剪面的坐标。bottom top:指定底和顶水平裁剪面的坐标。near far:指定近和远深度裁剪面的距离,两个距离均取正值。
gluPerspective()建立透视投影矩阵,并乘当前矩阵。其中的参数:Fovy:指定y方向中视域的角度(以度为单位)。Aspect:指定宽高比,确定x方向中的视域。ZNear:指定从观察者(视点)到近裁剪面的距离(总是正数)。ZFar:指定从观察者(视点)到远裁剪面的距离(总是正数)。其中的宽高比通常应以有关视口相匹配,视域角度在0.0--180.0范围内取值。
glOrtho( ):描述一个产生平行投影的透视矩阵。他指定的参数和glFrustum()命令相同。left right:指定左右垂直裁剪面的坐标。bottom top:指定底顶水平裁剪面的坐标。near far:指定视点到近和远深度裁剪面的距离。当这些面在视点的后面时,距离为负值。
上述的三个函数都可以,看你需要什么透视方法了。可以通过调用上面任意一个需要的函数设置视图体,任何位于视图体外的顶点都会被裁剪掉。
潘李亮
2002-09-19
打赏
举报
回复
你的投影矩阵的问题,near & far的距离太小了
二维图形学的变换-平移、旋转、
缩放
OpenGL
博客介绍了使用
OpenGL
实现多点画多边形及二维变换的方法。二维变换有两种方式,一是根据数学公式推断,包括平移、旋转、
缩放
的原理及伪代码;二是矩阵相乘,涉及二维平移、旋转、
缩放
矩阵,还提到复合矩阵相乘可减少计算次数,最后给出完整版代码及运行环境。
MFC+
OpenGL
三维绘图(一)——简单绘图平台的搭建与实现图像的旋转、
缩放
本文介绍如何在Visual Studio 2013环境下使用
OpenGL
进行绘图,并实现图像的旋转、平移与
缩放
功能。文章详细介绍了创建
OpenGL
项目的步骤、配置
OpenGL
环境的方法及如何利用
OpenGL
函数实现图形操作。
OpenGL
实验2:图形的旋转、平移、
缩放
本文详细介绍了
OpenGL
中的平移、旋转和
缩放
操作,通过代码实例演示了如何在3D场景中实现图形的动态变化,包括多图形的交互效果和键盘控制下的变换。
OpenGL
-旋转平移与
缩放
本文通过一个绘制正方体的示例程序,深入浅出地讲解了
OpenGL
中的旋转、
缩放
和平移变换,帮助读者理解这些变换如何影响模型坐标系。
opengl
绘制桌子(平移、旋转、
缩放
)
本文介绍如何使用
OpenGL
在Visual Studio C++ 2015环境中绘制一个动态变化的桌子模型。通过分解桌子为五个立方体并应用平移、旋转及
缩放
变换,实现了桌子的不同动态效果。
游戏开发
8,324
社区成员
23,685
社区内容
发帖
与我相关
我的任务
游戏开发
游戏开发相关内容讨论专区
复制链接
扫一扫
分享
社区描述
游戏开发相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章