部署并加载图片以用作全息应用程序中的纹理

时间:2016-09-29 07:13:39

标签: visual-c++ uwp hololens

我在Visual Studio 2015中使用C ++ / CX创建了一个样本全息应用程序(或者他们称之为带有帽子的花式C ++和ref新的)。它构建,部署和运行良好,呈现旋转的彩色立方体,就像它应该的那样。现在我正在尝试添加jpeg图像并将其用作立方体上的纹理。问题是,我应该在哪里放置图像,如何将其添加到项目中,如何将VS与项目的其余部分一起部署,以及如何在应用程序中加载它?

我对DirectX和UWP都没有任何经验。我已经在桌面上安装了this tutorial on textures Windows 10(一个普通的C ++应用程序,不管理,而不是UWP),尽管他们在教程中将文件加载到纹理中的方式对我来说并不起作用。经过一些谷歌搜索后,我下载了this library,为桌面Windows 10(DirectXTex_Desktop_2015_Win10.sln)构建了它,并在我的项目中使用如下:

DirectX::ScratchImage image;
LoadFromWICFile(L"myimage.jpg", DirectX::WIC_FLAGS_NONE, nullptr, image);
CreateShaderResourceView(d3d11Device, image.GetImages(), image.GetImageCount(), image.GetMetadata(), &CubesTexture);

有效。现在,对于Hololens我构建了他们的DirectXTex_Windows10.sln解决方案(假设如果另一个用于桌面,这个必须用于非桌面)并尝试(不成功)使用它,如下所示:

DirectX::ScratchImage image;
HRESULT hr = LoadFromWICFile(L"ms-appx:///myimage.jpg", DirectX::WIC_FLAGS_NONE, nullptr, image);
CreateShaderResourceView(m_deviceResources->GetD3DDevice(), image.GetImages(), image.GetImageCount(), image.GetMetadata(), &m_cubesTexture);

我还尝试了ms-appdata而不是ms-appx。在这两种情况下,LoadFromWICFile都不会返回S_OK。它提供ERROR_INVALID_NAME: The filename, directory name or volume label syntax is incorrect.至于myimage.jpg,我将其放入Assets子文件夹并通过Add->Existing Item添加到解决方案中。这足以让它部署到Hololens吗?如何检查它是否已部署?如果部署在设备上的哪个位置?

2 个答案:

答案 0 :(得分:2)

似乎我过于复杂了。

要将类似文件添加到项目中,只需使用right click(在解决方案资源管理器中的Assets子文件夹中)-> Add -> Existing Item。要在文件right click上的-> Properties设备或模拟器上部署它,请将Content设置为Yes,将Item Type设置为Image或{ {1}}(对于无法正确识别的内容,例如,Wavefront .OBJ文件,否则VS会尝试无法链接)。

要检查文件是否(以及在哪里)将在设备或模拟器上,您可以构建一个实际的包:右键单击该项目,选择Does not participate in build它创建一个Store->Create App Packages...文件,这实际上是一个zip-archive。您可以使用7zip等归档程序进行浏览,或者将其从.appx重命名为.appx,然后使用Windows文件资源管理器打开。就我而言,图像文件位于.zip子文件夹中。我能够通过它的简单相对路径读取它,如下所示(无Assets或其他此类前缀):

ms-appx:///

对于其他一些功能(HRESULT hr = LoadFromWICFile(L"Assets/myimage.jpg", DirectX::WIC_FLAGS_NONE, nullptr, image); std::fopen等),这条相对路径不起作用,我必须按如下方式使用完整路径:

std::ifstream

答案 1 :(得分:1)

这个纹理多维数据集项目可能会给你一些见解。我认为它基于C#VS2015全息模板。

https://github.com/dngoins/HololensDXTutorials