Vuforia入门Windows 10开发
来源:互联网 发布:西交大网络圈存 编辑:程序博客网 时间:2024/06/06 02:53
- 在Unity中为Windows 10开发
- 在Visual Studio 2015中使用ImageTargets
Vuforia 6引入了针对基于Intel的Windows 10设备(包括Microsoft Surface和HoloLens)开发Windows UWP应用程序的支持。已经推出了新的UWP版本的Vuforia SDK,用于本机和Unity开发,以及两个示例项目,演示了在C ++和C#中使用VuMark和ImageTargets的Unity。
SDK和样本都使用Vuforia C ++ API进行UWP本机开发,并使用C#API进行Unity开发。
释放人工制品
本土发展
- 适用于Windows 10的Vuforia UWP SDK
- 适用于Windows 10的Vuforia UWP本地样本
- 图像目标
- VuMark
团结发展
- Vuforia Unity Extension for Windows 10
- Vuforia Unity样本Windows 10
- 图像目标
- VuMark
样品
您可以在核心功能中找到以下示例 档案为UWP
- 图像目标
- VuMark
支持的工具
- Visual Studio 2015(推荐更新2)
- Direct3D11
你可以找到有关Vuforia支持的操作系统,工具和设备版本的其他信息在这里
支持的设备
有关支持的设备的其他信息,请参见此处
注意: Vuforia仅支持x86 UWP构建。不支持ARM UWP构建。
在Unity中为Windows 10开发
支持的版本:
⦁Visual Studio 2015(推荐更新2)
⦁Unity 5.4.0f3
安装和配置
您需要安装上述版本的Visual Studio和Unity,然后配置Unity才能使用Visual Studio作为首选的IDE和编译器。您还需要为Unity安装Visual Studios工具,请参阅下面的文章以获取此安装程序的链接。
请参阅:
Visual Studio Tools for Unity入门 - MSDN
Unity - 手册:Visual Studio C#集成
安装Unity时,请确保安装Windows Store平台以及.Net脚本后台。选择Windows Store平台后,也可以从“ 构建设置”对话框中安装Windows Store组件。
入门
从UWP的Vuforia Unity样本之一开始,了解Vuforia Windows 10 Unity项目的结构和组织。对于Unity,Vuforia UWP扩展和样本与Android和iOS几乎相同。唯一的区别是Windows Store从Unity构建使用一组平台特定的编译的Vuforia插件库。
示例是完整的Unity项目,包括用于Win 10的Vuforia Unity Extension,以及实现图像目标或VuMarks的预配置场景。您可以通过选择Windows Store作为目标平台,然后在构建设置中按Build按钮,轻松构建它们来评估每个功能。请参阅构建并执行下面的示例。
构建Windows Store应用程序时,Unity会生成一个Visual Studio项目并启动Visual Studio IDE。然后,您可以从Visual Studio构建并运行该项目。
安装Unity扩展
请参阅:开始使用Vuforia进行Unity开发
安装Unity样本
构建设置
要构建示例,请将“ 场景”文件夹中的所有场景添加到“ 文件”>“构建设置”对话框中的“ 生成场景”。选择Windows Store作为构建平台。
注意: 如果您最初安装了Unity编辑器时没有选择安装这些组件,则可能需要安装其他Unity Windows Store组件 - 该对话框将引导您使用必要的安装程序。
选择Build for Windows Store将为这些平台生成本机项目目录和解决方案。然后,您将需要从这些资源Visual Studio构建可执行文件。
构建和执行示例
⦁在“ 文件”>“构建设置”中设置 Windows Store的平台构建目标。
⦁将场景添加到Build中的场景中。
⦁定义唯一的产品名称,作为安装在设备上的应用程序的名称。
⦁按Build按钮生成Visual Studio项目
⦁从Visual Studio生成可执行文件并将其安装在设备上
Visual Studio构建配置
确保为x86设置构建目标。
要打包所有UWP设备的应用程序,请参阅:打包适用于Windows 10的通用Windows应用程序
在Visual Studio 2015中使用ImageTargets
本文将指导您完成在Visual Studio 2015中设置Vuforia UWP SDK和ImageTargets示例的步骤。
安装SDK和示例
⦁在开发环境中的适当位置打包Vuforia UWP
SDK⦁转到SDK根文件夹中的samples目录
⦁将ImageTarget示例打包到此文件夹中
⦁双击ImageTarget示例文件夹中的* .sln文件以加载样本Visual Studio 2015中的项目
注意:此图像显示VuMark示例中的VuMark.sln,ImageTarget.sln是由ImageTarget Sample提供的。
运行样品
⦁从developer.vuforia.com获取许可证密钥,并将其添加到您的项目中,请参阅:Vuforia License Manager
⦁将此键添加到AppSession.cpp中的InitAR()方法中
⦁您现在可以构建并运行示例。
注意:如果Visual Studio不能识别示例项目的包含路径,则需要通过右键单击项目检查器中的项目名称,通过ImageTarget项目的“属性”对话框添加它。将Vuforia文件夹添加到包含路径。
确保设置x86的构建目标,请注意不支持64位版本。
要打包所有UWP设备的应用程序,请参阅:https://msdn.microsoft.com/en-us/library/hh454036.aspx
修改样品
获得可追踪国家
State对象包含对所有当前TrackableResults的引用。您可以从Vuforia Renderer实例获取,如ImageTargetRenderer.cpp中的Render()方法所示。
在ImageTargetRenderer.cpp中:
<font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
//使用顶点和像素着色器渲染一帧。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
void
ImageTargetsRenderer :: Render()</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
{</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
// Vuforia初始化和数据加载是异步的。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
//仅在Vuforia初始化/加载完成后开始呈现。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
if
(!m_rendererInitialized ||!m_vuforiaStarted)</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
{</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
返回;</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
}</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
//从Vuforia获取状态并标记渲染部分的开头</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
Vuforia :: DXRenderData dxRenderData(m_deviceResources-> GetD3DDevice());</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
Vuforia :: Renderer&vuforiaRenderer = Vuforia :: Renderer :: getInstance();</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
Vuforia :: State state = vuforiaRenderer.begin(&dxRenderData);</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
// TODO:根据相机方向设置剔除</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
RenderScene(vuforiaRenderer,state);</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
Vuforia ::渲染::的getInstance()结束();</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
}</font></font><font></font>
查询跟踪结果
一旦拥有状态对象,您可以查询每个TrackableResult的状态来访问其姿态,确定其类型,并获取对其关联的可跟踪实例的引用。
在ImageTargetRenderer.cpp中:
<font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
void
ImageTargetsRenderer :: RenderScene(Vuforia :: Renderer&renderer,Vuforia :: State&state)</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
{</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
并发:: critical_section :: scoped_lock lock(m_renderingPrimitivesLock);</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
auto context = m_deviceResources-> GetD3DDeviceContext();</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
XMMATRIX xmProjection = XMLoadFloat4x4(&m_projection);</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
//设置视频背景渲染的状态</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
上下文> RSSetState(m_videoRasterState.Get());</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
context-> OMSetDepthStencilState(m_videoDepthStencilState.Get(),1);</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
context-> OMSetBlendState(m_videoBlendState.Get(),NULL,0xffffffff);</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
//绘制视频背景:</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
renderer.drawVideoBackground();</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
//设置增强渲染的状态</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
if
(Vuforia :: Renderer :: getInstance()。getVideoBackgroundConfig()。mReflection == Vuforia :: VIDEO_BACKGROUND_REFLECTION_ON)</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
上下文> RSSetState(m_augmentationRasterState.Get()); </font><font style=
"vertical-align: inherit;"
>
//前置摄像头</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
其他</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
上下文> RSSetState(m_augmentationRasterState.Get()); </font><font style=
"vertical-align: inherit;"
>
//返回相机</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
context-> OMSetDepthStencilState(m_augmentationDepthStencilState.Get(),1);</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
context-> OMSetBlendState(m_augmentationBlendState.Get(),NULL,0xffffffff);</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
for
(
int
tIdx = 0; tIdx <state.getNumTrackableResults(); tIdx ++)</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
{</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
//获取跟踪:</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
const
Vuforia :: TrackableResult * result = state.getTrackableResult(tIdx);</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
const
Vuforia :: Trackable&trackable = result-> getTrackable();</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
const
char
* trackableName = trackable.getName();</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
//设置modelview矩阵</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
auto poseGL = Vuforia :: Tool :: convertPose2GLMatrix(result-> getPose());</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
XMFLOAT4X4 poseDX;</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
memcpy
(poseDX.m,poseGL.data,
sizeof
(
float
)* 16);</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
XMStoreFloat4x4(&poseDX,XMMatrixTranspose(XMLoadFloat4x4(&poseDX)));</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
XMMATRIX xmPose = XMLoadFloat4x4(&poseDX);</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
std :: shared_ptr <SampleCommon :: Texture> texture = GetAugmentationTexture(trackable.getName());</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
if
(!texture-> IsInitialized()){</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
提升口感>初始化();</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
}</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
if
(m_extTracking){</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
RenderTower(xmPose,xmProjection,texture);</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
}</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
else
{</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
RenderTeapot(xmPose,xmProjection,texture);</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
}</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
}</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
}</font></font><font></font>
呈现内容
从该结果获得的姿态可用于将内容呈现到相机视图中的ImageTarget上。
在ImageTargetRenderer.cpp中:
<font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
void
ImageTargetsRenderer :: RenderTeapot(</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
const
XMMATRIX&poseMatrix,</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
const
XMMATRIX&projectionMatrix,</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
const
std :: shared_ptr <SampleCommon :: Texture>纹理</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
)</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
{</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
auto context = m_deviceResources-> GetD3DDeviceContext();</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
自动缩放= XMMatrixScaling(TEAPOT_SCALE,TEAPOT_SCALE,TEAPOT_SCALE);</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
auto modelMatrix = XMMatrixIdentity()* scale;</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
//设置模型矩阵('model'部分的'model-view'矩阵)</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
XMStoreFloat4x4(&m_constantBufferData.model,modelMatrix);</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
//设置姿势矩阵('视图''模型视图'矩阵的一部分)</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
XMStoreFloat4x4(&m_constantBufferData.view,poseMatrix);</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
//设置投影矩阵</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
XMStoreFloat4x4(&m_constantBufferData.projection,projectionMatrix);</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
//准备常量缓冲区以将其发送到图形设备。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
上下文> UpdateSubresource1(</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
m_constantBuffer.Get()</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
0,</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
空值,</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
&m_constantBufferData,</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
0,</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
0,</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
0</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
);</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
//每个顶点是TexturedVertex结构体的一个实例。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
UINT
stride =
sizeof
(SampleCommon :: TexturedVertex);</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
UINT
offset = 0;</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
上下文> IASetVertexBuffers(</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
0,</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
1,</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
m_teapotMesh-> GetVertexBuffer(),</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
和步幅,</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
&抵消</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
);</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
上下文> IASetIndexBuffer(</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
m_teapotMesh-> GetIndexBuffer(),</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
DXGI_FORMAT_R16_UINT,
//每个索引是一个16位无符号整数(short)。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
0</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
);</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
上下文> IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
上下文> IASetInputLayout(m_inputLayout.Get());</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
//附加我们的顶点着色器。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
context-> VSSetShader(m_vertexShader.Get(),nullptr,0);</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
//将常量缓冲区发送到图形设备。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
上下文> VSSetConstantBuffers1(</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
0,</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
1,</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
m_constantBuffer.GetAddressOf()</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
nullptr,</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
nullptr</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
);</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
//附加我们的像素着色器。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
上下文 - > PSSetShader(m_pixelShader.Get(),nullptr,0);</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
上下文 - > PSSetSamplers(0,1,texture-> GetSamplerState());</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
上下文 - > PSSetShaderResources(0,1,texture-> GetTextureView());</font></font><font></font>
<font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
//绘制对象。</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
context-> DrawIndexed(m_teapotMesh-> GetIndexCount(),0,0);</font></font><font></font><font style=
"vertical-align: inherit;"
><font style=
"vertical-align: inherit;"
>
}</font></font><font></font>
- Vuforia入门Windows 10开发
- Vuforia开发入门一-准备工作
- Vuforia开发入门(一):准备工作
- Vuforia开发入门二-资源介绍
- Vuforia开发入门四-自定义标识
- Vuforia开发入门(二):资源介绍
- Vuforia开发入门(四):自定义标识
- AR开发入门:使用Vuforia SDK开发AR APP
- Vuforia开发入门三-License Manager(证书管理器)
- Vuforia开发入门(三):License Manager(证书管理器)
- vuforia之HoloLens 入门
- Vuforia SDK---- Vuforia AR开发对焦模式
- Vuforia SDK---- AR开发vuforia 问题总结
- Vuforia SDK---- AR开发vuforia 二维码扫描
- Vuforia SDK---- AR开发vuforia购买
- Vuforia SDK---- Vuforia AR开发对焦
- 搭建Vuforia开发环境
- Vuforia开发问题总结
- 第八周项目三 对称矩阵压缩存储的实现与应用(1)
- java学习系列1(面向对象)
- spring security 4.0.4 英文文档
- 内外网间通信过程
- 位图 查找重复 排序 存数据
- Vuforia入门Windows 10开发
- QT+MSVC执行时中文乱码问题
- 利用sed处理json格式文件
- ofbiz总结——Screen Widgets定义中常用的一些标签
- 中级算法之Diff Two Arrays
- 链表中环的入口结点
- 项目移植时出现无法解析Servlet和JSP的el表达式的情况
- 理解Java对象序列化
- 第八周(2)项目1—猴子选大王(数组版)