欢迎访问LearnOpenTK
教程的第一个项目。本指南将教你如何从NuGet
获取OpenTK
,并打开您的第一个窗口。我们承诺这将是一个短暂的。
从NuGet安装
OpenTK
已经发布到.NET
官方的包管理NuGet
上,点击链接下载。OpenTK 3
可以安装在.NET Framework 2.0
和任何衍生单声道版本上。
在Visual Studio 2013/2015/2017
中,点击工具 -> NuGet包管理 -> 程序包管理器控制台
来访问程序包管理器
这将调出程序包管理器控制台,一个
Visual Studio
中NuGet
的PowerShell
扩展,为了安装OpenTK
,在序包管理器控制台中输入以下命令:
Install-Package OpenTK
创建窗口
不像OpenGL
,OpenTK
自带窗口系统。本教程将教您如何使用它。继续在您喜爱的IDE
中创建C#控制台项目
,并创建一个名为Game.cs
文件,并使用指令添加以下内容:
using OpenTK;
using OpenTK.Graphics;
namespace YourNamespaceHere
{
public class Game
{
}
}
现在我们有一个空白的类,是时候把它变成GameWindow
了。要做到这一点,只需继承GameWindow
,像这样:
public class Game : GameWindow
现在你的类是一个基本窗口。这很好,但就其本身来说,你什么也做不了。有很多方法可以自定义你的游戏窗口,但在本教程中,我们将创建一个简单的构造函数,让我们设置窗口的宽度,高度和标题。为此,我们重写OpenTK
中包含的基本构造函数:
public Game(int width, int height, string title) : base(width, height, GraphicsMode.Default, title)
{
}
你的GameWindow
已准备就绪!现在,您所有需要做的就是在程序中创建一个实例。当您之前创建项目时,它也应该创建一个名为Program.cs
,其中包含Main
函数的文件。若要在程序启动时打开窗口,我们必须:
- 创建
Game
类的实例 - 通过调用
Run
函数启动所有泵 - 当所有的做完后,释放
Game
对象
// 此行创建一个新实例,并在 using 语句中包装实例,以便我们退出块后自动释放实例。
using (Game game = new Game(800, 600, "Learn OpenTK"))
{
//运行需要双精度值,即它应该努力达到的每秒帧数
//你可以把它分出去, 它将按硬件允许它做尽可能的更新
game.Run(60.0);
}
将该代码插入主函数,然后构建并运行程序!你现在有一个空白的窗口,很好!但是,关闭窗口的唯一方法就是使用交叉(X)按钮或Alt+F4
.我们不想要这样,让我们做一点点输入处理!
GameWindow
有很多方法可以重写,以将各种功能添加到窗口中。您可以查看此网站的"API"部分来查看所有这些内容,但在这种情况下,我们感兴趣的是OnUpdateFrame
。
通过简单的敲入override OnUpdateFrame
,你的IDE
应该能够生成这样的代码
protected override void OnUpdateFrame(FrameEventArgs e)
{
base.OnUpdateFrame(e);
}
检测按键按下真的很简单!OpenTK
有一个名为"KeyboardState
"类中的IsKeyDown
方法,如果按下键,该方法返回true
。例如,在按下返回(Esc
)键时,KeyboardState.IsKeyDown(Key.Escape)
返回true
。
当我们按下退出按钮时,我们想退出程序,综上所述,在按下退出键时退出就很简单了
KeyboardState input = Keyboard.GetState();
if (input.IsKeyDown(Key.Escape))
{
Exit();
}
现在,函数看起来应该是这样:
protected override void OnUpdateFrame(FrameEventArgs e)
{
base.OnUpdateFrame(e);
KeyboardState input = Keyboard.GetState();
if (input.IsKeyDown(Key.Escape))
{
Exit();
}
}
总结
在本教程中,我们安装了 OpenTK,创建了一个空白窗口,用于侦听按下的退出键,并在按下退出键时退出。在下一教程中,我们将在刚刚创建的空白窗口上绘制一个三角形。