Вызывай рендер из основного цикла проги и отсчитывай кол-во отрисованных кадров, как ты и писал. Не надо вызывать рендер по событию, это так на первый взгляд. Сам пишу только такие вещи с++ и рывки по FPS случаются только по изменению кол-ва отрисованной геометрии (текстур) и кол-во проходов и др. моментов. А у тебя в принципе не должно такого быть