int CHWTessellator::PatchIndexValue()

in d3d/archive/images/d3d11/tessellator.cpp [2077:2115]


int CHWTessellator::PatchIndexValue(int index)
{
    if( m_bUsingPatchedIndices )
    {
        if( index >= m_IndexPatchContext.outsidePointIndexPatchBase ) // assumed remapped outide indices are > remapped inside vertices
        {
            if( index == m_IndexPatchContext.outsidePointIndexBadValue )
                index = m_IndexPatchContext.outsidePointIndexReplacementValue;
            else
                index += m_IndexPatchContext.outsidePointIndexDeltaToRealValue;
        }
        else
        {
            if( index == m_IndexPatchContext.insidePointIndexBadValue )
                index = m_IndexPatchContext.insidePointIndexReplacementValue;
            else
                index += m_IndexPatchContext.insidePointIndexDeltaToRealValue;
        }
    }
    else if( m_bUsingPatchedIndices2 )
    {
        if( index >= m_IndexPatchContext2.baseIndexToInvert )
        {
            if( index == m_IndexPatchContext2.cornerCaseBadValue )
            {
                index = m_IndexPatchContext2.cornerCaseReplacementValue;
            }
            else
            {
                index = m_IndexPatchContext2.indexInversionEndPoint - index;
            }
        }
        else if( index == m_IndexPatchContext2.cornerCaseBadValue )
        {
            index = m_IndexPatchContext2.cornerCaseReplacementValue;
        }
    }
    return index;
}