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

原文 http://www.johanfalk.eu/blog/sharpdx-tutorial-part-2-creating-a-window

在第二篇教程中,我们将介绍如何创建一个稍后将呈现的简单窗口。

  1. 首先,我们将创建一个名为的新类Game。右键单击项目并选择“添加 - >类...”,将文件命名为“Game.cs”。

  2. 首先,我们将类RenderForm 设为public,然后添加一个带有两个变量来保存窗口客户端大小的宽度和高度(渲染大小,不包括窗口的边框)。该RenderForm 班还需要是一个引用添加到SharpDX.Windows

    using SharpDX.Windows;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text; using System.Threading.Tasks; namespace MySharpDXGame { public class Game { private RenderForm renderForm; private const int Width = 1280; private const int Height = 720; } }

    RenderForm Windows.Form SharpDX提供的子类。这个类就像Windows.Form为我们提供了一个带有边框,标题栏等的窗口。但它也为我们提供了一个针对3D图形进行了优化的渲染循环。如果您想了解更多相关信息,请查看SlimDX(类似于SharpDX的另一个包装器)文档:http://slimdx.org/tutorials/BasicWindow.php 。

  3. 接下来,我们将构造函数添加到Game 创建RenderForm 的类中。我们还需要添加一个引用System.Drawing。我们还将设置标题并禁止用户调整窗口大小。

    using System.Drawing;[...]public Game() { renderForm = new RenderForm("My first SharpDX game"); renderForm.ClientSize = new Size(Width, Height); renderForm.AllowUserResizing = false; }
  4. 下一步是向我们的Game 类添加两个方法,一个用于启动渲染/游戏循环,另一个用于调用每个帧的回调方法。这是通过以下代码完成的:

    public void Run() { RenderLoop.Run(renderForm, RenderCallback); } private void RenderCallback() { }

    我们传入我们的RenderForm 方法和每个帧调用RenderLoop.Run(…) 方法。

  5. 我们现在将为我们的Game 类添加一些清理,以确保正确放置对象。所以我们让我们的Game 类实现接口IDisposable

    public class Game : IDisposable
    {[...]public void Dispose() { renderForm.Dispose(); } }

    在这里,我们也确保处置我们的RenderForm

  6. 作为最后一步,我们现在将从main方法运行我们的游戏。因此,打开“Program.cs”类,它在创建“控制台应用程序项目”时自动添加,并将Main(…)方法更改为以下内容:

    [STAThread]
    static void Main(string[] args) { using(Game game = new Game()) { game.Run(); } }

    因为Game实现IDisposable 它会因using语句而自动正确处理。在此处详细了解其工作原理:https://msdn.microsoft.com/en-us/library/yh598w02.aspx。

  7. 现在,如果您运行该程序,您应该看到一个空窗口,其中包含正确的大小和标题栏文本:

这就是本教程的全部内容,在下一部分中,我们将介绍初始化Direct3D设备并设置交换链。

posted on 2019-05-03 01:29 NET未来之路 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/10804108.html

SharpDX初学者教程第2部分:创建窗口相关推荐

  1. SharpDX初学者教程第4部分:绘制三角形

    SharpDX初学者教程第4部分:绘制三角形 原文 http://www.johanfalk.eu/blog/sharpdx-beginners-tutorial-part-4-drawing-a-t ...

  2. SAP UI5 初学者教程之九 - 创建第一个 Component 的试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...

  3. C# OpenTK教程 - 1.1 创建窗口

    欢迎访问LearnOpenTK教程的第一个项目.本指南将教你如何从NuGet获取OpenTK,并打开您的第一个窗口.我们承诺这将是一个短暂的. 从NuGet安装 OpenTK已经发布到.NET官方的包 ...

  4. pyqt5+qt desiger实例教程(1)创建含有三个按钮的窗口,点击按钮2输出消息、按钮3可退出

    pyqt5+qt desiger实例教程(1)创建含有三个按钮的窗口,点击按钮三可退出 目标:设计一个含有三个按钮的窗口,点击按钮2弹出消息,点击按钮3退出 如果是使用的anacoda那么自带qtde ...

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

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

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

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

  7. Panda3D 初学者教程(一)

    Panda3D 初学者教程(一) 原文链接 原文 Lesson 1 Hello World In which we learn how to make and run a Panda3D instan ...

  8. Cocos2d-x初学者教程

    Cocos2d-x初学者教程 Cocos2d-x初学者教程 入门 分辨率设置 添加精灵 移动怪物 射击弹丸 碰撞检测与物理 画龙点睛 关于本项目在其他系统如Windows上的移植 参考资料 本文翻译自 ...

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

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

最新文章

  1. 日期控件判断是否为空
  2. 利用nginx的stream模块实现内网端口的转发代理
  3. html页面调用ico图标,如何在HTML中使用图标字体 - icon font?
  4. Kotlin学习-基础知识点
  5. codeblocks调试窗口字体大小以及修改主题
  6. go 设置进程名_七天用Go写个docker(第六天)
  7. UIButton的创建与释放问题
  8. 华为方舟编译器开源,我命由我不由天!
  9. [猎豹网校]数据结构与算法_C#语言
  10. 利用matlab将位图转为SVG矢量图
  11. 三菱f800变频器 频率设定_三菱F800变频器调试参数总结.docx
  12. mac安装homebrew失败的处理方法
  13. 《拆掉思维里的墙》的读后感作文900字
  14. JAVA实验七 图形用户界面的设计与实现
  15. 向武 清华大学 计算机,哥哥保送弟弟全市第二 双胞胎同时上清华(组图)
  16. linux skyeye,在Ubuntu 10.04上安装SkyEye及测试
  17. MFC 执行顺序总结
  18. Android实现弹出窗口(PopUpWindow)
  19. matlab实验报告的总结,一些数字信号处理实例(学校实验报告总结)
  20. grep、cut常见用法

热门文章

  1. 【JavaScript】全面解析offsetLeft、offsetTop
  2. 用java模拟登录正方教务系统,抓取课表和个人成绩等数据
  3. 现在最好玩的AI竟然来自一个家谱公司???
  4. Spock、Mockito、MINA
  5. Apollo 应用与源码分析:Monitor监控-软件监控-进程存活监控-process_monitor
  6. 飞机里黑匣子的定位原理
  7. ROOM使用心得记录
  8. 幸福无关他人,只需忠于自己
  9. .net报表控件ActiveReports教程:运行时修改数据(附源码)
  10. phpcms移动端和pc端_phpcms实现手机端与PC端双模板的方法与详细教程