これは単純なC計算です。FilterIndexがFilterDepthと等しい場合、上記の最初のものはロールオーバーしません。つまり、FilterDepthは15で、filterIndexは15になります。これを実行すると、CPUは0になりますが、16になり、後で1になり、0にはなりません。
ロジックを2つに分割すると、機能します。ここで何が欠けていますか?
filterIndex = ((filterIndex++) % FilterDepth) ;
対。
filterIndex++;
filterIndex=filterIndex % FilterDepth;