1. 程式人生 > >SharpDX初學者教程第2部分:創建窗口

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

rst 信息 num tasks 通過 rec 教程 pac text

原文 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設備並設置交換鏈。

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