最大化 OpenTK Window 不会调整显示对象的大小
Maximizing OpenTK Window doesnt resize the shown objects
我遇到了一个问题,每当我最大化 window 时,对象的大小并没有像它应该的那样改变。如果我只是调整 window 的大小,对象会按应有的比例缩放,只有最大化不起作用。
但是在 window 离开 最大化模式后发生了变化。所以回到正常window大小后,我只能看到渲染对象的一小部分。
The example 真的很简单;它只是画了一些三角形。
我认为没有发生任何有趣的事情;但他们包括这个覆盖:
protected override void OnResize(ResizeEventArgs e)
{
GL.Viewport(0, 0, Size.X, Size.Y);
base.OnResize(e);
}
所以我想这会在调整 window 大小时调整对象的大小。我为最大化事件尝试了类似的方法,但没有用:
protected override void OnMaximized(MaximizedEventArgs e)
{
GL.Viewport(0, 0, Size.X, Size.Y);
base.OnMaximized(e);
}
我什至把 GL.Viewport(0, 0, Size.X, Size.Y);
放在 OnRenderFrame(...)
函数的开头,但这也无济于事。 (Size.X 和 Size.Y 一直都是正确的,我查过了。)
你应该先调用base.OnResize
然后更新视口大小,你不需要重写OnMaximized
:
protected override void OnResize(ResizeEventArgs e)
{
base.OnResize(e); // this should be called immediately
GL.Viewport(0, 0, Size.X, Size.Y);
}
查看 OpenTK 源代码,您可以看到 Size
在 base.OnResize(e)
方法中更新,因此您使用的是陈旧的值。
我遇到了一个问题,每当我最大化 window 时,对象的大小并没有像它应该的那样改变。如果我只是调整 window 的大小,对象会按应有的比例缩放,只有最大化不起作用。
但是在 window 离开 最大化模式后发生了变化。所以回到正常window大小后,我只能看到渲染对象的一小部分。
The example 真的很简单;它只是画了一些三角形。
我认为没有发生任何有趣的事情;但他们包括这个覆盖:
protected override void OnResize(ResizeEventArgs e)
{
GL.Viewport(0, 0, Size.X, Size.Y);
base.OnResize(e);
}
所以我想这会在调整 window 大小时调整对象的大小。我为最大化事件尝试了类似的方法,但没有用:
protected override void OnMaximized(MaximizedEventArgs e)
{
GL.Viewport(0, 0, Size.X, Size.Y);
base.OnMaximized(e);
}
我什至把 GL.Viewport(0, 0, Size.X, Size.Y);
放在 OnRenderFrame(...)
函数的开头,但这也无济于事。 (Size.X 和 Size.Y 一直都是正确的,我查过了。)
你应该先调用base.OnResize
然后更新视口大小,你不需要重写OnMaximized
:
protected override void OnResize(ResizeEventArgs e)
{
base.OnResize(e); // this should be called immediately
GL.Viewport(0, 0, Size.X, Size.Y);
}
查看 OpenTK 源代码,您可以看到 Size
在 base.OnResize(e)
方法中更新,因此您使用的是陈旧的值。