在咕了一年多以后终于开始正式的写代码了。既然是学习 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
我改了域名了,忘了跟你说了,现在是https://wo.aziyuan.cn,已经添加了你的友链
Done~