Я писал новую базу кода в opengl и очень рано встретил странную ошибку. Это явное колебание частоты кадров, которая повторяется и предсказуема.
Я знаю, что он определенно пропорционален отображаемым объектам. Он также пропорционален размеру экрана (не размер видового экрана, а не размер окна, просто размер физического устройства) Это примерно соотношение кадров 0.2: 1 (низкий: высокий)
Мне стало любопытно и графовали его, имейте в виду, что окно/контекст не отменен или не ограничен.
Вид полностью неподвижен, и все объекты неподвижны. Каждый кадр точно такой же. В любой момент ввода данных не поступало. Нет ничего основанного на времени. Сбор мусора не происходит.
Я не понимаю, если это в основном один кадр, который визуализируется снова и снова, что может вызвать такие большие изменения?
Здесь псевдокод программы
create window
load shaders
grab uniform locations
create camera
create 3 meshes // They just hold the buffers and data for a model
create x objects and pass a pointer to a random mesh // Objects hold position, rotation etc + link to mesh
while game is running
poll window for events
capture mouse and recalculate VP matrix if required
for each object
recalc MVP
bind mesh buffers and draw elements
draw window //SFML handles this, just swaps front/back buffers and draws
clean up data
Если это не дает понимания, я загрузил проект VS2012 в github: https://github.com/Twistedsnail/Untitled_for_SO (он, вероятно, не будет запускаться локально, потому что он требует SFML2 в указанном месте и GLM в файлах VS)