zoukankan      html  css  js  c++  java
  • 2018-8-17-C#-从零开始写-SharpDx-应用-控制台创建-Sharpdx-窗口

    title author date CreateTime categories
    C# 从零开始写 SharpDx 应用 控制台创建 Sharpdx 窗口
    lindexi
    2018-8-17 9:3:36 +0800
    2018-6-18 21:16:2 +0800
    C# D2D DirectX SharpDX Direct2D 渲染

    本文告诉大家如何在控制台使用 SharpDx 创建窗口,这是一个底层的博客,我会用很多博客告诉大家如何从控制台创建一个高性能渲染程序

    如果想看更多关于底层渲染的博客,请点击渲染系列

    首先创建一个控制台程序,选择 dotnet framework 为 4.5 这样就可以保证下面安装的库可以使用

    下载

    最好是使用 VisualStudio 2017项目格式,这样就可以直接复制下面代码放在自己的项目文件,就可以快速使用 Nuget 安装而不是需要等待 VisualStudio 的安装

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net45</TargetFramework>
      </PropertyGroup>
      <ItemGroup>
        <PackageReference Include="SharpDX" Version="4.1.0" />
        <PackageReference Include="SharpDX.D3DCompiler" Version="4.1.0" />
        <PackageReference Include="SharpDX.Desktop" Version="3.1.1" />
        <PackageReference Include="SharpDX.Direct2D1" Version="4.1.0" />
        <PackageReference Include="SharpDX.Direct3D11" Version="4.1.0" />
        <PackageReference Include="SharpDX.DXGI" Version="4.1.0" />
      </ItemGroup>
      <ItemGroup>
        <Folder Include="Properties" />
      </ItemGroup>
    </Project>

    如果使用的不是 VisualStudio 2017 的就通过 Nuget 安装下面几个库

    • SharpDX
    • SharpDX.D3DCompiler
    • SharpDX.Desktop
    • SharpDX.Direct2D1
    • SharpDX.Direct3D11
    • SharpDX.DXGI

    创建窗口

    首先创建一个简单的类,这个类主要使用 RenderForm 来创建窗口

       class KikuSimairme 
        {
            private RenderForm _renderForm;
    
            private const int Width = 1280;
            private const int Height = 720;
    
           
        }

    这个类的主要就是 RenderForm ,在使用的时候需要引用

    using SharpDX.Windows;
    

    现在还没有创建好窗口,需要在构造函数使用这个代码

            public KikuSimairme()
            {
                _renderForm = new RenderForm();
                _renderForm.ClientSize = new Size(Width, Height);
            }

    如果是在 WPF 创建一个窗口,除了创建还需要显示,下面来告诉大家如何显示窗口

    KikuSimairme添加两个方法

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

    这样就可以在调用 Run 显示窗口,因为创建窗口需要开启循环,使用 RenderLoop.Run 就可以

    在不使用这个窗口时需要记得去掉

        class KikuSimairme : IDisposable
        {
        	// 其他代码
        	public void Dispose()
            {
                _renderForm?.Dispose();
            }
        }

    在 Main 函数创建类,然后显示窗口

            static void Main(string[] args)
            {
                using (var temp = new KikuSimairme())
                {
                    temp.Run();
                }
            }

    现在按下运行就可以看到显示了一个窗口

    虽然里面还没什么东西,但是已经可以显示窗口,在窗口里面也就可以进行画东西。以前很少在一个控制台创建窗口,现在使用 sharpDx 可以很简单在控制台创建窗口

    这是KikuSimairme类的全部代码

        class KikuSimairme : IDisposable
        {
            /// <inheritdoc />
            public KikuSimairme()
            {
                _renderForm = new RenderForm();
                _renderForm.ClientSize = new Size(Width, Height);
            }
    
            private const int Width = 1280;
    
            private const int Height = 720;
    
            public void Run()
            {
                RenderLoop.Run(_renderForm, RenderCallback);
            }
    
            private RenderForm _renderForm;
    
            private void RenderCallback()
            {
            }
    
            /// <inheritdoc />
            public void Dispose()
            {
                _renderForm?.Dispose();
            }
        }
    

    虽然已经创建窗口,但是现在还没有内容,在下一篇C# 从零开始写 SharpDx 应用 初始化dx修改颜色,我将会告诉大家如何在这个窗口修改颜色。更多SharpDx博客请到SharpDX 系列

    参见:SharpDX Beginners Tutorial Part 1: Setting up a SharpDX project in Visual Studio 2013 - Johan Falk

    下一篇 C# 从零开始写 SharpDx 应用 初始化dx修改颜色

  • 相关阅读:
    jquery toggle(listenerOdd, listenerEven)
    struts quick start
    hdu 1518 Square (dfs)
    hdu 2544 最短路 (最短路径)
    hdu 1754 I Hate It (线段树)
    hdu 1856 More is better (并查集)
    hdu 1358 Period (KMP)
    hdu 2616 Kill the monster (DFS)
    hdu 2579 Dating with girls(2) (bfs)
    zoj 2110 Tempter of the Bone (dfs)
  • 原文地址:https://www.cnblogs.com/lindexi/p/12085719.html
Copyright © 2011-2022 走看看