【OpenTK学习笔记】0x01——Hello, Window~

在咕了一年多以后终于开始正式的写代码了。既然是学习 OpenGL ,那么第一步还是造一个窗户,最起码先跑起来对吧。

笔记里面使用的是 C# 语言进行编程,使用 OpenTK 作为绑定库操作 OpenGL。(.NET 版本是 6.0;OpenTK 版本是 5.0.0-pre7,使用 Nuget 进行安装。)另外最好准备好一个 Rider,用这玩意写代码十分舒服。

话不多说先上基础代码,这里可以用控制台应用程序也可以用窗口应用程序,建议使用前者。(此处默认读者有C#基础,最起码创建项目得会吧。)

using Chapter0x01;
using OpenTK.Mathematics;
using OpenTK.Windowing.Desktop;

using var game = new Game(
    new GameWindowSettings(),
    new NativeWindowSettings
    {
        Size = new Vector2i(640, 480), 
        Title = "0x01 Hello, Window!"
    }
);

game.Run();
using OpenTK.Windowing.Desktop;

namespace Chapter0x01;

public class Game : GameWindow
{
    public Game(GameWindowSettings gameWindowSettings, NativeWindowSettings nativeWindowSettings) 
        : base(gameWindowSettings, nativeWindowSettings)
    {
    }
}

可以看到我们用了两个类,其中 Program 类是程序的入口,我们用了顶级类的写法;而 Game 类继承自 GameWindow ,并且拥有一个构造器。我们可以通过构造器传入窗口大小和名称等参数,这里的参数名很容易理解就不再说明很多了。(没有特殊说明的话,本章代码都在 Game 类中编写。

然后为了调试方便,我们覆写一下 OnUpdateFrame 方法,功能是按 Esc 键关闭窗口。此处可以看到,获取键盘输入直接使用窗口的 KeyboardState 属性就可以。

    protected override void OnUpdateFrame(FrameEventArgs e)
    {
        base.OnUpdateFrame(e);

        if (KeyboardState.IsKeyPressed(Keys.Escape))
        {
            Close();
        }
    }

本文使用 CC BY-NC-SA 4.0 协议授权使用。
—— 秋雨落 2022.9.18

发表回复

您的电子邮箱地址不会被公开。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.