欢迎回到我们关于使用 Visual Studio 3D初学者工具包 ! 如果你读过我们之前的文章( 在这里 和 在这里 ),您已经有了一个具有动画模具的应用程序,并且您已经准备好进行最后几次更改,以使此应用程序在Windows RT设备上运行 和Windows Phone 8。
如果你还没有读过之前的帖子,你可能想浏览这些帖子并创建一个应用程序——一旦你准备好了,我们会在这里。
如果你是一个视觉学习者,你可能更喜欢下面的第1部分和第2部分在我们的新课程 第9频道视频 ! 不到30分钟你就可以从 从零开始跳骰子!
Windows RT的最后步骤
因为当前的windowsrt设备有一个带有 D3D功能级别 9 1 visualstudio图形工具为具有D3Du功能级别u10u0及更高级别的图形卡生成着色器,要使该应用程序在windowsrt上运行,还需要执行一个额外的小步骤:我们需要生成一个版本的着色器,以便为正确的功能级别进行编译。
为此,请打开网格(Die.fbx)并单击立方体。在“属性工具”(Properties tool)窗口中,查找名为“效果”(Effect)的属性。单击该属性左侧的“+”按钮并选择(高级)值。最后,单击“…”按钮打开Phong效果的明暗器源。
现在看到的是默认值 Visual Studio应用于此网格的着色器,显示在Visual Studio着色器设计器中。着色器设计器允许您构建复杂的视觉效果,而无需学习新的编程语言。要了解有关着色器设计器的详细信息,请检查 文档 和 演练 在MSDN上。
我们想用这个着色器做的是将它导出到HLSL,以便能够为Direct3D功能级别9图形卡重新编译它。如果设备不支持D3D功能级别10或更高,初学者工具包将自动查找与原始着色器同名的回退着色器。
要导出此着色器,请转到工具栏中的最后一个图标(高级)->导出->导出为…(参见下图)并将其另存为“ 电话:hlsl “在您的资产文件夹中。然后,右键单击SolutionExplorer->add->Existing item…上的Assets文件夹,并选择刚才导出的文件,将该文件添加到项目中。
最后,我们需要告诉HLSL编译器这个文件是一个像素着色器。为此,右键单击解决方案资源管理器上的“Phong.hlsl”,然后选择“属性”。在“属性”页上,确保“配置”下拉列表设置为“所有配置”,并且“平台”下拉列表设置为“所有平台”,以便我们所做的更改应用于应用程序的所有版本。
然后,在“HLSL Compiler”页面上,将Shader Type属性更改为“Pixel Shader(/ps)”并确保启用优化(将Disable optimizations属性设置为“No”),如下图所示:
通过此步骤,Windows RT的一切都准备就绪。现在可以使用 Visual Studio远程调试工具 .
在发布WindowsRT应用程序之前,您应该做的另一个更改是确保快照视图和纵向模式按预期工作。在本例中,我们所做的只是通过删除CreateWindowSizeDependentResource()上的以下行来确保更改视图时摄影机保持在相同的方向上 上的方法 游戏.cpp:
void Game::CreateWindowSizeDependentResources(){ GameBase::CreateWindowSizeDependentResources(); // (snip) Initialize camera...
if (aspectRatio < 1.0f) { /// /// portrait or snap view /// m_graphics.GetCamera().SetUpVector(XMFLOAT3(1.0f, 0.0f, 0.0f));
fovAngleY = 120.0f * XM_PI / 180.0f; }
// (snip) Lights...}
您可以在上下载此状态下的项目 码丛 (下面是直接下载链接)。
将其移植到Windows Phone
使用 支持Windows Phone的初学者工具包 ,将此应用程序移植到Windows Phone 8是轻而易举的事。您所要做的就是获取初学者工具包,将Game.cpp和Game.h类替换为您为此应用程序创建的类,添加所有资产(在本例中为Die.fbx、DieTexture.png和Phong.hlsl),并在点击屏幕时更改XAML codebhind以调用RollDie()。让我们一步一步地回顾一下:
- 确保你有 Windows Phone 8 SDK 安装在您的电脑上。
- 去拿那个 支持Windows Phone的Visual Studio 3D初学者工具包 在visualstudio中打开它。
- 在StartKitPhoneComponent项目中,删除“共享/动画”文件夹,并从“共享/资源”文件夹中删除所有资源。
- 用本教程中创建的文件替换Game.cpp和Game.h文件。
- 将游戏中使用的所有资源添加到StartKitPhoneComponent项目的Shared/assets文件夹中:Die.fbx、DieTexture.png和Phong.hlsl。
- 对于Phong.hlsl,在“属性”页上,确保“配置”下拉列表设置为“所有配置”,并且“平台”下拉列表设置为“所有平台”。然后,在“HLSL编译器”页面上,将Shader Type属性更改为“Pixel Shader(/ps)”,并将Disable optimizations属性设置为“No”。
- 在Direct3DBackground.cpp/.h中,删除未使用的方法:ToggleHitEffect()和ChangeMaterialColor()
- 在Direct3DBackground.cpp中,将以下内容添加到OnPointerReleased()方法中:
void Direct3DBackground::OnPointerReleased(DrawingSurfaceManipulationHost^ sender, PointerEventArgs^ args){ m_renderer->RollDie();}
- 在MainPage.xaml上,删除所有与计数器和应用程序栏相关的xaml。
- 在MainPage.xaml.cs上,删除所有未使用的字段和方法。
完成!您现在可以在Windows Phone emulator或Windows Phone 8设备上运行此应用程序。你可能想调整相机的位置和视野,在你的手机屏幕上得到一个更大的模具。
您可以在上下载最终项目 码丛 (下面是直接下载链接)。
为了未来
这个应用程序现在已经完成了,但是要让它在Windows应用商店中大放异彩,还有很多工作要做。以下是一些初步想法:
- 更改徽标、平铺图标和启动屏幕以匹配应用程序主题
- 创造一个凉爽的背景,可能是一个“表”那里的模具是休息
- 添加阴影、反射和其他逼真的视觉效果
- 使模具可自定义、半透明或添加圆角边
- 使应用程序与一个以上的骰子,或与骰子与不同数量的边工作
- 添加真实的物理元素,例如反弹、基于力的旋转和碰撞检测
- 应用程序挂起时保存骰子状态,然后恢复
- 保存以前掷骰子的历史记录
- 添加传感器支持,使骰子可以通过摇动设备滚动
- 掷骰子时添加声音
- 使用骰子辊实现棋盘游戏或赌场模拟器…
包装
在这个博客系列中,您看到了如何使用visualstudio3dstarter工具包为windows8、windowsrt和windowsphone创建一个3D应用程序,在所有平台之间共享所有应用程序逻辑和资产。您还了解了一点VisualStudio图形工具,并发现创建一个3D应用程序并不是一项神秘的任务—您可以在不深入了解3D建模、复杂数学和HLSL的情况下开始,并以自己的速度学习新概念。
我们希望听到有关本演练、VisualStudio3D初学者工具包的反馈,或者您希望在VisualStudio for graphics development中看到的内容。 请在评论中给我们留言!
非常特别地感谢jenniferleaf共同撰写了本文并测试了代码。特别感谢高尔纳兹·阿利贝吉对视频的帮助,以及布鲁诺·索尼诺和埃里克·巴塔里奥对博客文章的评论。