SharpDX初學者教程第2部分:建立窗口

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

在第二篇教程中,咱們將介紹如何建立一個稍後將呈現的簡單窗口。函數

  1. 首先,咱們將建立一個名爲的新類Game右鍵單擊項目並選擇「添加 - >類...」,將文件命名爲「Game.cs」。
    建立遊戲類。oop

  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 spa

  3. 接下來,咱們將構造函數添加到Game 建立RenderForm 類中。咱們還須要添加一個引用System.Drawing咱們還將設置標題並禁止用戶調整窗口大小。code

    using System.Drawing; [...] public Game() { renderForm = new RenderForm("My first SharpDX game"); renderForm.ClientSize = new Size(Width, Height); renderForm.AllowUserResizing = false; }

     

  4. 下一步是向咱們的Game 添加兩個方法,一個用於啓動渲染/遊戲循環,另外一個用於調用每一個幀的回調方法。這是經過如下代碼完成的:orm

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


    咱們傳入咱們的RenderForm 方法和每一個幀調用RenderLoop.Run(…) 方法。對象

  5. 咱們如今將爲咱們的Game 添加一些清理,以確保正確放置對象。因此咱們讓咱們的Game 類實現接口IDisposableblog

    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. 如今,若是您運行該程序,您應該看到一個空窗口,其中包含正確的大小和標題欄文本:
    SharpDX窗口

這就是本教程的所有內容,在下一部分中,咱們將介紹初始化Direct3D設備並設置交換鏈。

相關文章
相關標籤/搜索