in UVAtlasTool/Mesh.cpp [1095:1196]
HRESULT Mesh::GetVertexBuffer(_Inout_ DirectX::VBWriter& writer) const noexcept
{
if (!mnVerts || !mPositions)
return E_UNEXPECTED;
HRESULT hr = writer.Write(mPositions.get(), "SV_Position", 0, mnVerts);
if (FAILED(hr))
return hr;
if (mNormals)
{
auto e = writer.GetElement11("NORMAL", 0);
if (e)
{
bool x2bias = (e->Format == DXGI_FORMAT_R11G11B10_FLOAT);
hr = writer.Write(mNormals.get(), "NORMAL", 0, mnVerts, x2bias);
if (FAILED(hr))
return hr;
}
}
if (mTangents)
{
auto e = writer.GetElement11("TANGENT", 0);
if (e)
{
bool x2bias = (e->Format == DXGI_FORMAT_R11G11B10_FLOAT);
hr = writer.Write(mTangents.get(), "TANGENT", 0, mnVerts, x2bias);
if (FAILED(hr))
return hr;
}
}
if (mBiTangents)
{
auto e = writer.GetElement11("BINORMAL", 0);
if (e)
{
bool x2bias = (e->Format == DXGI_FORMAT_R11G11B10_FLOAT);
hr = writer.Write(mBiTangents.get(), "BINORMAL", 0, mnVerts, x2bias);
if (FAILED(hr))
return hr;
}
}
if (mTexCoords)
{
auto e = writer.GetElement11("TEXCOORD", 0);
if (e)
{
hr = writer.Write(mTexCoords.get(), "TEXCOORD", 0, mnVerts);
if (FAILED(hr))
return hr;
}
}
if (mTexCoords2)
{
auto e = writer.GetElement11("TEXCOORD", 1);
if (e)
{
hr = writer.Write(mTexCoords2.get(), "TEXCOORD", 1, mnVerts);
if (FAILED(hr))
return hr;
}
}
if (mColors)
{
auto e = writer.GetElement11("COLOR", 0);
if (e)
{
hr = writer.Write(mColors.get(), "COLOR", 0, mnVerts);
if (FAILED(hr))
return hr;
}
}
if (mBlendIndices)
{
auto e = writer.GetElement11("BLENDINDICES", 0);
if (e)
{
hr = writer.Write(mBlendIndices.get(), "BLENDINDICES", 0, mnVerts);
if (FAILED(hr))
return hr;
}
}
if (mBlendWeights)
{
auto e = writer.GetElement11("BLENDWEIGHT", 0);
if (e)
{
hr = writer.Write(mBlendWeights.get(), "BLENDWEIGHT", 0, mnVerts);
if (FAILED(hr))
return hr;
}
}
return S_OK;
}