SharpDX初学者教程第2部分:创建窗口
原文 http://www.johanfalk.eu/blog/sharpdx-tutorial-part-2-creating-a-window
在第二篇教程中,我们将介绍如何创建一个稍后将呈现的简单窗口。
首先,我们将创建一个名为的新类
Game
。右键单击项目并选择“添加 - >类...”,将文件命名为“Game.cs”。
首先,我们将类
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 。接下来,我们将构造函数添加到
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; }
下一步是向我们的
Game
类添加两个方法,一个用于启动渲染/游戏循环,另一个用于调用每个帧的回调方法。这是通过以下代码完成的:public void Run() { RenderLoop.Run(renderForm, RenderCallback); } private void RenderCallback() { }
我们传入我们的
RenderForm
方法和每个帧调用RenderLoop.Run(…)
方法。我们现在将为我们的
Game
类添加一些清理,以确保正确放置对象。所以我们让我们的Game
类实现接口IDisposable
:public class Game : IDisposable {[...]public void Dispose() { renderForm.Dispose(); } }
在这里,我们也确保处置我们的
RenderForm
。作为最后一步,我们现在将从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。现在,如果您运行该程序,您应该看到一个空窗口,其中包含正确的大小和标题栏文本:
这就是本教程的全部内容,在下一部分中,我们将介绍初始化Direct3D设备并设置交换链。
转载于:https://www.cnblogs.com/lonelyxmas/p/10804108.html
SharpDX初学者教程第2部分:创建窗口相关推荐
- SharpDX初学者教程第4部分:绘制三角形
SharpDX初学者教程第4部分:绘制三角形 原文 http://www.johanfalk.eu/blog/sharpdx-beginners-tutorial-part-4-drawing-a-t ...
- SAP UI5 初学者教程之九 - 创建第一个 Component 的试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...
- C# OpenTK教程 - 1.1 创建窗口
欢迎访问LearnOpenTK教程的第一个项目.本指南将教你如何从NuGet获取OpenTK,并打开您的第一个窗口.我们承诺这将是一个短暂的. 从NuGet安装 OpenTK已经发布到.NET官方的包 ...
- pyqt5+qt desiger实例教程(1)创建含有三个按钮的窗口,点击按钮2输出消息、按钮3可退出
pyqt5+qt desiger实例教程(1)创建含有三个按钮的窗口,点击按钮三可退出 目标:设计一个含有三个按钮的窗口,点击按钮2弹出消息,点击按钮3退出 如果是使用的anacoda那么自带qtde ...
- Python tkinter教程-01:创建窗口
Python tkinter教程-01:创建窗口 文章目录 0 准备工作 1 创建空白窗体 2 窗口标题 3 窗口大小与位置 4 锁定窗口大小 5 窗口图标 6 隐藏与显示窗口 其它 0 准备工作 要 ...
- wpf中的点击窗口放大放小按钮怎么写_Python tkinter教程01:创建窗口
往期回顾 我想问下,你为什么看这里?这是第一期 文章目录 0 准备工作 1 创建空白窗体 2 窗口标题 3 窗口大小与位置 4 锁定窗口大小 5 窗口图标 6 隐藏与显示窗口 其它 0 准备工作 要使 ...
- Panda3D 初学者教程(一)
Panda3D 初学者教程(一) 原文链接 原文 Lesson 1 Hello World In which we learn how to make and run a Panda3D instan ...
- Cocos2d-x初学者教程
Cocos2d-x初学者教程 Cocos2d-x初学者教程 入门 分辨率设置 添加精灵 移动怪物 射击弹丸 碰撞检测与物理 画龙点睛 关于本项目在其他系统如Windows上的移植 参考资料 本文翻译自 ...
- 【DND图形库】三、创建窗口和绘制精灵
三.创建窗口和绘制精灵与文本 (甲)创建窗口 代码如下,很简明,通过调用一系列SetWindow函数: virtual void _init() override {//初始化sys->SetW ...
最新文章
- 日期控件判断是否为空
- 利用nginx的stream模块实现内网端口的转发代理
- html页面调用ico图标,如何在HTML中使用图标字体 - icon font?
- Kotlin学习-基础知识点
- codeblocks调试窗口字体大小以及修改主题
- go 设置进程名_七天用Go写个docker(第六天)
- UIButton的创建与释放问题
- 华为方舟编译器开源,我命由我不由天!
- [猎豹网校]数据结构与算法_C#语言
- 利用matlab将位图转为SVG矢量图
- 三菱f800变频器 频率设定_三菱F800变频器调试参数总结.docx
- mac安装homebrew失败的处理方法
- 《拆掉思维里的墙》的读后感作文900字
- JAVA实验七 图形用户界面的设计与实现
- 向武 清华大学 计算机,哥哥保送弟弟全市第二 双胞胎同时上清华(组图)
- linux skyeye,在Ubuntu 10.04上安装SkyEye及测试
- MFC 执行顺序总结
- Android实现弹出窗口(PopUpWindow)
- matlab实验报告的总结,一些数字信号处理实例(学校实验报告总结)
- grep、cut常见用法