OpenGL parallel projection graphics do not scale with the window
  QtOpenGL平行投影窗口缩放导致图形变形...
OpenGL parallel projection graphics do not scale with the window
实现步骤
- 重写窗口的
resize事件- 计算投影的范围
 
 - 更新投影矩阵
 drawcull
resizeGL
- 我们最初计算一个比例:
- 关于窗口的
size和投影的范围的- 使用
left, right计算一个spanx(right - left),top, bottom计算spany(top - bottom), 分别与窗口的宽高比较1
2
3
4auto ratioW = w / spanx;
auto ratioH = h / spany;
// 取最小的一个
auto ratio = std::min(ratioW,ratioH); 
 - 使用
 - 每次窗口缩放,我们就使用上述的范围计算新的
left,right,bottom,top- 只要投影的范围没有发生改变我们便不计算新的
ratio 
 - 只要投影的范围没有发生改变我们便不计算新的
 
 - 关于窗口的
 - 计算新的
left,right,bottom,top1
2
3
4
5
6
7
8
9void OpenGLWidget::resizeGL(int w, int h)
{
glViewport(0,0,w,h);
left = - w / ratio;
right = abs(left);
bottom = -h / ratio;
top = abs(bottom);
} 
更新投影矩阵
- update
- 关于
zNear & zFar投影当二维平面时候,并未使用这两个参数1
projMat.ortho(left,right,bottom,top,0.1f,100.0f);
 
 - 关于
 
更新绘制的场景
1  | 
  |