微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

最大化 OpenTK 窗口不会调整显示对象的大小

如何解决最大化 OpenTK 窗口不会调整显示对象的大小

我遇到的问题是,每当我最大化窗口时,对象的大小并没有像它应该的那样改变。如果我只是调整窗口大小,对象会按其应有的比例缩放,只有最大化不起作用。

但更改发生在窗口离开最大化模式之后。所以回到正常窗口大小后,我只能看到渲染对象的一小部分。

The example 真的很简单;它只是画了一些三角形。

我不认为有什么有趣的事情发生;但他们包括这个覆盖:

protected override void OnResize(ResizeEventArgs e)
        {
            GL.Viewport(0,Size.X,Size.Y);
            base.OnResize(e);
        }

所以我猜这会在调整窗口大小时调整对象的大小。我为最大化事件尝试了类似的方法,但没有奏效:

protected override void OnMaximized(MaximizedEventArgs e)
        {
            GL.Viewport(0,Size.Y);
            base.OnMaximized(e);
        }

我什至将 GL.Viewport(0,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,Size.X,Size.Y);
}

查看 OpenTK 源代码,您可以看到 Size 已在 base.OnResize(e) 方法中更新,因此您使用的是陈旧值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。