void LightingDemo2::buildCigar()
{
    GeometryGenerator::MeshData cig;
    GeometryGenerator geoGen;
    geoGen.CreateCigarPack(15.f, cig);

    std::vector<Vertex::PosNormalTex> vertices(cig.Vertices.size());
    for (UINT i = 0; i < cig.Vertices.size(); ++i)
    {
        vertices[i].Pos    = cig.Vertices[i].Position;
        vertices[i].Normal = cig.Vertices[i].Normal;
        vertices[i].Tex    = cig.Vertices[i].TexC;
    }
    D3D11_BUFFER_DESC vbd;
    vbd.Usage = D3D11_USAGE_IMMUTABLE;
    vbd.ByteWidth = sizeof(Vertex::PosNormalTex) * cig.Vertices.size();
    vbd.BindFlags = D3D11_BIND_VERTEX_BUFFER;
    vbd.CPUAccessFlags = 0;
    vbd.MiscFlags = 0;
    D3D11_SUBRESOURCE_DATA vinitData;
    vinitData.pSysMem = &vertices[0];
    HR(md3dDevice->CreateBuffer(&vbd, &vinitData, &mCigVB));

    D3D11_BUFFER_DESC ibd;
    ibd.Usage = D3D11_USAGE_IMMUTABLE;
    ibd.ByteWidth = sizeof(UINT) * cig.Indices.size();
    ibd.BindFlags = D3D11_BIND_INDEX_BUFFER;
    ibd.CPUAccessFlags = 0;
    ibd.MiscFlags = 0;
    D3D11_SUBRESOURCE_DATA iinitData;
    iinitData.pSysMem = &cig.Indices[0];
    HR(md3dDevice->CreateBuffer(&ibd, &iinitData, &mCigIB));
}