C++ 透视视图openGL qt的任何解决方案
当我放大图像时,我有以下问题。我没能解决它。我目前正在用c++开发Qt。我有一个关于正交投影和透视投影的问题。我需要在不遍历图像的情况下进行缩放。我试图使C++ 透视视图openGL qt的任何解决方案,c++,qt,opengl,C++,Qt,Opengl,当我放大图像时,我有以下问题。我没能解决它。我目前正在用c++开发Qt。我有一个关于正交投影和透视投影的问题。我需要在不遍历图像的情况下进行缩放。我试图使glViewport更大,但它对我不起作用。xmin,xmax。。。是最大值和最小值对于每个轴 void-MeshViewer::resizeGL(int-width,int-height) { 内侧=qMin(宽度、高度); 如果(高度==0) 高度=1; glViewport(((闪烁)(宽度-侧)/2.0),(闪烁)(高度-侧)/2.
glViewport
更大,但它对我不起作用。xmin
,xmax
。。。是最大值和最小值对于每个轴
void-MeshViewer::resizeGL(int-width,int-height)
{
内侧=qMin(宽度、高度);
如果(高度==0)
高度=1;
glViewport(((闪烁)(宽度-侧)/2.0),(闪烁)(高度-侧)/2.0),(闪烁)侧,(闪烁)侧);
glMatrixMode(GLU模型视图);
glLoadIdentity();
glOrtho(xmin,xmax,ymin,ymax,zmin,zmax);
glMatrixMode(GLU模型视图);
glLoadIdentity();
}
窗口显示的是一个由六个平面定义的平截头体。通常,这些平面是平行的,如在立方体中。不显示位于平截头体外部的任何内容
“缩放”可以用一般的方式解释为“看得更大、更近、更详细”
有几种方法可以实现缩放效果:
- 缩放对象。这样做,缺陷在于物体(或其部分)可能位于平截头体的近平面之前或远平面之后
- 将相机移向对象。近/远平面也存在同样的问题。另外,注意在模型中移动,可以设置“屏障”(可能是一个框)以防止相机移动太深
- 对于正交投影,将左/右/顶部/底部平面设置为更靠近对象。这会使平截头体变小,因此一些对象被剪裁是正常的
- 对于透视投影,可以使用与正交投影相同的技巧。这个技巧只是为了减小FOV(视野)角度。如果对象太远,透视效果可能不太明显
glViewport(0, 0, width, height)