欢迎访问LearnOpenTK教程的第一个项目。本指南将教你如何从NuGet获取OpenTK,并打开您的第一个窗口。我们承诺这将是一个短暂的。

从NuGet安装

OpenTK已经发布到.NET官方的包管理NuGet上,点击链接下载。OpenTK 3可以安装在.NET Framework 2.0和任何衍生单声道版本上。
Visual Studio 2013/2015/2017中,点击工具 -> NuGet包管理 -> 程序包管理器控制台来访问程序包管理器

这将调出程序包管理器控制台,一个Visual StudioNuGetPowerShell扩展,为了安装OpenTK,在序包管理器控制台中输入以下命令:

Install-Package OpenTK

创建窗口

不像OpenGLOpenTK自带窗口系统。本教程将教您如何使用它。继续在您喜爱的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,创建了一个空白窗口,用于侦听按下的退出键,并在按下退出键时退出。在下一教程中,我们将在刚刚创建的空白窗口上绘制一个三角形。

C# OpenTK教程 - 1.1 创建窗口相关推荐

  1. Python tkinter教程-01:创建窗口

    Python tkinter教程-01:创建窗口 文章目录 0 准备工作 1 创建空白窗体 2 窗口标题 3 窗口大小与位置 4 锁定窗口大小 5 窗口图标 6 隐藏与显示窗口 其它 0 准备工作 要 ...

  2. wpf中的点击窗口放大放小按钮怎么写_Python tkinter教程01:创建窗口

    往期回顾 我想问下,你为什么看这里?这是第一期 文章目录 0 准备工作 1 创建空白窗体 2 窗口标题 3 窗口大小与位置 4 锁定窗口大小 5 窗口图标 6 隐藏与显示窗口 其它 0 准备工作 要使 ...

  3. SharpDX初学者教程第2部分:创建窗口

    SharpDX初学者教程第2部分:创建窗口 原文 http://www.johanfalk.eu/blog/sharpdx-tutorial-part-2-creating-a-window 在第二篇 ...

  4. C# OpenTK教程 - 目录

    更新中 起步 1.0 了解OpenGL 1.1 创建窗口 1.2 你好三角形 1.3 元素缓冲区对象 1.4 纹理 1.5 多个纹理 1.6 转换 1.7 坐标系统 1.8 相机 照明 2.1 颜色 ...

  5. 转载:【opencv入门教程之六】创建Trackbar图片对比度、亮度值调整

    [OpenCV入门教程之六] 创建Trackbar & 图像对比度.亮度值调整 浅墨_毛星云 2014-03-18 21:43:18 103746 收藏 21 最后发布:2014-03-18 ...

  6. 【DND图形库】三、创建窗口和绘制精灵

    三.创建窗口和绘制精灵与文本 (甲)创建窗口 代码如下,很简明,通过调用一系列SetWindow函数: virtual void _init() override {//初始化sys->SetW ...

  7. HTML5超链接和多媒体,IT兄弟连 HTML5教程 多媒体应用 创建图像和链接

    原标题:IT兄弟连 HTML5教程 多媒体应用 创建图像和链接 指引 多媒体来自多种不同的格式.它可以是您听到或看到的任何内容,文字.图片.音乐.音效.录音.电影.动画等等.在因特网上,您会经常发现嵌 ...

  8. 57 java编程思想 创建窗口和程序片 可视编程和Beans

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 57.j ...

  9. 56 java编程思想 创建窗口和程序片 用户接口API

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 56.j ...

最新文章

  1. 架构师之路 — 部署架构 — 高可用集群 — 主备 HA 系统中的脑裂问题
  2. 微信小程序code 换取 session_key
  3. MySQL5.6开启慢查询
  4. Qt之QHeaderView排序
  5. 30-seconds-code——math
  6. 1077篇!ICCV2019接收结果公布,你中了吗?(附7篇论文链接,含Oral)
  7. i219v linux,I219V高传播延迟
  8. GTS来了!阿里微服务架构下的分布式事务解决方案
  9. php js 比较,PHP与JS的比较
  10. Python连接MySQL数据库之pymysql模块使用
  11. mysql with lock tables_mysql出现大量FLUSH TABLES WITH READ LOCK
  12. 【GTK】信号量(signal)大全
  13. centos mysql 主从安装_基于 CentOS Mysql 安装与主从同步配置详解
  14. 用双十一的故事串起碎片的网络协议(中)
  15. fckeditor 2.6 php,php下 FCKeditor 2.6.6的使用和配置
  16. lingo等相关参数
  17. 1000瓶药水,一瓶有毒,用10只老鼠来判断到底是哪一瓶
  18. python mpi_MPI Python环境搭建
  19. 一文搞懂mysql单引号,双引号,反引号的使用
  20. 智能优化算法:蝗虫优化算法-附代码

热门文章

  1. 统计学习方法六:支持向量机三(支持向量定量理解和算法总结)
  2. 在 Windows 8 中支持传感器
  3. [React] 尚硅谷 -- 学习笔记(三)
  4. CSS3-多列布局-伸缩盒布局-伸缩项目
  5. GitHub in vs2010、vs2013
  6. 算法的概念与伪代码的使用
  7. linux中运行ifconfig出现错误,不能sudo apt install net-tools,Linux不能联网
  8. STM32(四)--------按键控制LED灯
  9. dwz怎么使用数据加载中提示_百度地图数据采集手把手教,从此POI数据不再是愁...
  10. centos7进系统死机_电脑小白想学重装系统要怎么做?详细过程分享,学会远离电脑店...