OpenTK---创建窗口

这里我们介绍最基础的知识,首先我们想要在计算机上进行图像显示,我们首先需要一个GUI界面。因此本篇主要介绍如何使用OpenTK创建GUI界面。

  1. 创建主程序中的类
using OpenTK.Mathematics;
using OpenTK.Windowing.Desktop;

namespace test_CreateWindow
{
    class Program
    {
        static void Main(string[] args)
        {
            var nativeWindowSettings = new NativeWindowSettings()
            {
                Size = new Vector2i(800, 600),	// 窗口界面的尺寸为(800, 600)
                Title = "test_CreateWindow",	// 其他可用的参数可以点击NativeWindowSettings进行查看
            };

            using (Game game = new Game(GameWindowSettings.Default, nativeWindowSettings))
            {
                game.Run();	// 类似于Python,PyGame包中的mainloop,主循环开启,使得GUI窗口可以得以保持
            }
        }
    }
}

using OpenTK.Mathematics;:代码中使用到的Vector2i对象所在域名,因此我们需要进行引用。
using OpenTK.Windowing.Desktop;:代码中使用到的NativeWindowSettings对象所在域名,因此我们需要进行引用。

  1. 构建主程序中调用的GUI窗口界面的类
using OpenTK.Windowing.Common;
using OpenTK.Windowing.Desktop;
using OpenTK.Windowing.GraphicsLibraryFramework;

namespace test_CreateWindow
{
    // 从GameWindow对象中继承
    public class Game : GameWindow
    {
        // 构造函数
        public Game(GameWindowSettings gameWindowSettings, NativeWindowSettings nativeWindowSettings) : base(gameWindowSettings, nativeWindowSettings)
        {

        }

        // 所有的override方法都应该写入Game.cs类文件中而不应该在主程序Program.cs中
        protected override void OnUpdateFrame(FrameEventArgs e)
        {
            // var input = KeyboardState;
            // 上述代码应该等同于下面的代码
            KeyboardState input = KeyboardState;

            // 注意这里是Keys而不再是Key, 老版本中使用的是Key。
            if (input.IsKeyDown(Keys.Escape))
            {
                // 使用close而不是exit, close是GameWindow中定义的方法
                Close();
            }

            base.OnUpdateFrame(e);
        }

    }
}

using OpenTK.Windowing.Desktop;:代码中使用到的GameWindow对象所在域名,因此我们需要进行引用。
using OpenTK.Windowing.GraphicsLibraryFramework;:代码中使用到的KeyboardState对象所在域名,因此我们需要进行引用。
using OpenTK.Windowing.Common;:代码中使用到的FrameEventArges对象所在域名,因此我们需要进行引用。此外,我们自己创建的域名,里面包含了我们自己创建的渲染器Shader类,Camera类以及Texture类。之后我们进行实际项目时会进一步提及。

KeyboardState input = KeyboardState;

if (input.IsKeyDown(Keys.Escape))
{
    Close();
}

上述代码实现了运行代码打开GUI界面后键盘按下Esc键后退出程序。

码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤奋的大熊猫

你的鼓励将是我写作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值