示例#1
0
void RenderDirect( clPtr<clFlowUI> Control )
{
    int Num = Control->FNumImg;
    int CurImg = Control->GetCurrentImage();
    float Dist = ( float )( Num * OneImageSize );

    if ( Num < 1 ) {
        return;
    }

    // index = [curr - 2 .. curr + 2]
    /// Left -> Right -> Selected rendering order
    int ImgOrder[] = { CurImg - 3, CurImg - 2, CurImg - 1, CurImg + 3, CurImg + 2, CurImg + 1, CurImg };

    for ( int in_i = 0 ; in_i < 7 ; in_i++ )
    {
        int i = ImgOrder[in_i];

        if ( i < 0 ) {
            i += ( 1 - ( ( int )( i / Num ) ) ) * Num;
        }

        if ( i >= Num ) {
            i -= ( ( int )( i / Num ) ) * Num;
        }

        if ( i < Num && i > -1 )
        {
            vec3 Pt[4];
            Control->QuadCoords( Pt, Control->FFlinger->FValue - ( float )( i ) * OneImageSize );

            vec3 Q[4];

            for ( int j = 0 ; j < 4 ; j++ )
            {
                Q[j] = Control->FProjection * Control->FView * Pt[j];
            }

            BoxR( Q, 0xFFFFFF );
        }
    }
}