使用VisualStudio3D初学者工具包开发应用程序(第1部分,共3部分)

作为 我们几个星期前答应过的 ,欢迎阅读本系列的第一篇文章,我们将探讨使用 Visual Studio 3D初学者工具包 . 在这个系列中,我们将开发一个3D骰子辊,允许您通过轻敲或点击来滚动一个6面骰子。在滚动数字的过程中,模具会在空中跳跃和翻转。这个应用程序也可以在Windows8上运行 捕捉视图 ,这样用户在使用其他应用程序时仍然可以掷骰子。最后,我们将向您展示如何使此应用程序与Windows RT设备兼容 并将其移植到Windows Phone。

null

第一篇文章将介绍创建应用程序的基础知识,我们可以在屏幕上渲染模具并应用纹理。  我们还将回顾VisualStudioProfessional或更高版本中包含的VisualStudio图形工具。  如果您只有适用于Windows 8的Visual Studio Express 2012,不用担心,您仍然可以使用此演练。

学习Direct3D开发最困难的部分是需要学习许多新概念,例如编写HLSL着色器以及如何将网格转换为运行时格式。有许多visualstudio工具使这个过程更容易,让您可以专注于应用程序逻辑,而不是处理所有这些新概念。无论何时你准备好了,你都可以为你的应用程序添加更多高级功能,而不必重新开始。在本系列中,我们提供了许多指向有关我们使用的DirectX功能的其他文档的链接,因此您可能希望按照这些链接来探索有关DirectX和图形编程的更多信息。

让我们停止交谈,开始设计我们的应用程序!

演示应用程序:骰子辊

骰子用于各种棋类游戏和赌博。在任何编程语言中,制作一个简单的掷骰子应用程序都是一项简单的任务——在许多语言中,随机数生成器只是一行代码。但是我们怎样才能让这个应用程序更有趣呢?

图片[1]-使用VisualStudio3D初学者工具包开发应用程序(第1部分,共3部分)-yiteyi-C++库

当然,让我们把它变成3D!我们将只使用VisualStudio2012 Professional开发我们的完整游戏和资源(look ma,没有3D建模工具!)。我们开始吧!

从头开始

使用VisualStudio3D初学者工具包的第一步是下载并打开它。您可以从 https://aka.ms/vs3dkit . 我们还准备了一个特别版本的 入门套件 ((仅适用于Windows应用商店)本教程从一个完全没有3D模型的空白屏幕开始,因此我们可以探索如何创建自己的资源。你可以在上面找到那个版本 码丛 (下面的互动程序上有直接下载链接)。 此变更集还显示了要从初学者工具包中删除所有内容必须进行的更改。

图片[2]-使用VisualStudio3D初学者工具包开发应用程序(第1部分,共3部分)-yiteyi-C++库

Visual Studio Express用户注意事项 :您可以通过单击下面的互动程序下载此项目中使用的资源。 只需在下面的演练中的适当位置将它们添加到项目中。

图片[3]-使用VisualStudio3D初学者工具包开发应用程序(第1部分,共3部分)-yiteyi-C++库

如果你运行这个应用程序,你会看到初学者工具包的茶壶启动屏幕,然后是一个空的灰色屏幕。别担心,我们很快就会加满的…

创建和显示网格

让我们从创建我们将在这个应用程序中使用的唯一网格开始–一个将用作模具的三维立方体。为此,在VisualStudio解决方案资源管理器上,右键单击StartKit项目中的Shared/Assets文件夹,然后选择Add->New item…->Graphics->3D Scene(.fbx)。我们叫它“死吧,fbx”。 下图 显示Visual Studio网格编辑器的外观:

图片[4]-使用VisualStudio3D初学者工具包开发应用程序(第1部分,共3部分)-yiteyi-C++库

要添加多维数据集,请打开工具箱并双击“多维数据集”选项。您还可以添加一些其他简单的形状,如圆柱体和茶壶,甚至可以进行一些灯光编辑,如旋转、缩放和平移您的三维模型。

要在屏幕上显示立方体,我们必须在游戏中添加一些代码,以便加载网格并渲染它。在初学者工具包中,Game类(Game.cpp/Game.h)包含我们的游戏呈现逻辑,这是应该添加代码的地方。

第一步是在初始化应用程序时从文件中加载网格。在Game::Initialize()方法中添加以下代码:

void Game::Initialize(){    Mesh::LoadFromFile(m_graphics, L"die.cmo", L"", L"", m_meshModels); }

这段代码使用Starter工具包的Mesh类将模具模型从文件加载到mu meshModels向量中。

  • 第一个参数mu graphics包含graphics类的一个实例,它将所有有用的DirectX对象分组在一个地方。
  • 第二个参数是文件名。该文件使用“.cmo”扩展名,因为在构建时,所有资产都转换为更简单的格式,更适合运行时使用。网格被编译为“已编译网格对象”(CMO)文件,着色器使用 标准FX编译器 将“编译的着色器对象”(CSO)文件和图像(PNG、JPG等)编译为运行时优化 DDS(DirectDraw曲面) 文件夹。
  • 第三个和第四个参数包含应用程序应在其中查找此网格中使用的着色器对象(CSO文件)和纹理对象(DDS文件)的相对路径。您很少需要更改默认值。
  • 最后一个参数是对应存储加载网格的网格的std::vector的引用。

下一步是在每一帧渲染立方体。为此,请将以下代码添加到Game::Render()方法:

void Game::Render(){    GameBase::Render();    // clear    m_d3dContext->OMSetRenderTargets(        1,        m_d3dRenderTargetView.GetAddressOf(),        m_d3dDepthStencilView.Get()        );    m_d3dContext->ClearRenderTargetView(        m_d3dRenderTargetView.Get(),        DirectX::Colors::DarkSlateGray        );    m_d3dContext->ClearDepthStencilView(        m_d3dDepthStencilView.Get(),        D3D11_CLEAR_DEPTH,        1.0f,        0        );    XMMATRIX transform = XMMatrixIdentity();    for (UINT i = 0; i < m_meshModels.size(); i++)    {        m_meshModels[i]->Render(m_graphics, transform);    }    //    // only enable MSAA if the device has enough power    //    if (m_d3dFeatureLevel >= D3D_FEATURE_LEVEL_10_0)    {        // (... MSAA code ...)    }}

此代码调用每个网格的渲染方法,以便在屏幕上显示网格。变换矩阵包含要应用于每个网格的变换(缩放、平移、旋转等)。在本例中,我们应用了恒等矩阵,它在没有任何视觉变化的情况下渲染对象。

如果您现在运行应用程序,您将在屏幕中间看到一个立方体:

图片[5]-使用VisualStudio3D初学者工具包开发应用程序(第1部分,共3部分)-yiteyi-C++库

这个立方体看起来有点小,不是吗?让我们把照相机靠近一点。更改游戏中的以下行::CreateWindowSizeDependentResources()方法:

m_graphics.GetCamera().SetPosition(XMFLOAT3(0.0f, 2.0f, -6.0f));

每次窗口大小更改(例如分辨率更改、捕捉视图)时都会调用此方法,因此这是创建和修改相机属性的好地方。我们改变的线设置了摄像机的位置;您还可以更改视野(StarterKit代码中的fovAngleY),使对象看起来更大或更小,而无需更改相机位置。

添加纹理

在本示例中,我们将为模具面提供纹理。这确实很简单,但它给了您一个很好的起点,让您以后可以使用其他工具来创建自己的。

下图显示了纹理的外观。你可以得到纹理 在这里 .

图片[6]-使用VisualStudio3D初学者工具包开发应用程序(第1部分,共3部分)-yiteyi-C++库

要使用纹理,请首先将文件复制到资源文件夹。然后,回到visualstudio,右键单击解决方案资源管理器上的Assets文件夹,选择Add->Existing item…并选择您的图像。

最后一步是将纹理应用于立方体。为此,打开模具网格(Die.fbx)并单击立方体。在“属性工具”窗口(快捷方式:Alt+Enter)中,查找名为“Texture1”的属性。单击“…”按钮找到您的图像并将其应用于多维数据集。

图片[7]-使用VisualStudio3D初学者工具包开发应用程序(第1部分,共3部分)-yiteyi-C++库

如果您再次运行该应用程序,您将看到模具已经在正确的位置上有数字。

您可以在上获取处于此状态的应用程序 码丛 (下面的互动程序上有直接下载链接)。

图片[8]-使用VisualStudio3D初学者工具包开发应用程序(第1部分,共3部分)-yiteyi-C++库

在我们的下一篇文章中,我们将添加一些动画代码,并得到这个模具滚动!  到时候见!

2013年4月2日更新 –修复了到CodePlex的断开链接。

骰子滚轴资产.zip

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享