В настоящее время я разрабатываю игру с использованием OpenTK для рендеринга; C #, .Net 4.0, OpenGL 2.
Запуск в развернутом режиме (не во весь экран, но занимает все доступное пространство экрана) при разрешении 1280x1024, в среднем я вижу около 400 FPS. В разрешении 1680x1050 я вижу около 315 FPS в среднем. Несмотря на эту высокую частоту кадров, я испытываю периодическое заикание.
Как правило, в течение примерно 3 полных секунд рендеринг заметно замедляется, затем он становится идеально плавным в течение 0,5-1 секунды. Этот цикл повторяется навсегда.
На счетчике FPS не отображается падение частоты кадров в соответствии с заиканием. Я вычисляю частоту кадров путем подсчета кадров до достижения желаемой частоты обновления, а затем вычисляю частоту кадров, используя количество тактов в секунду, количество тактов в частоте обновления и количество кадров, которые были подсчитаны. При использовании этого метода я вижу обновление только один раз в доли секунды, но я никогда не видел, чтобы частота кадров падала намного ниже, чем я ожидал.
Эта проблема значительно усугубляется, если я перетаскиваю окно игры на второй экран.
Запуск приложения в сборке выпуска не помог решить проблему.
Я профилировал приложение, используя ANTS от redgate. Это указало на несколько хороших проблем, которые я с тех пор исправил.
Есть предложения?