У меня есть некоторые подпрограммы, которые рисуют сцену, тогда я меняю местами буферы, и, поскольку у меня есть подкачка ожидания, установленная в 1, вызов может блокировать ожидание вертикальной синхронизации.Дискретность между временем рисования и временем подкачки
Можно ли измерить, сколько времени потрачено на рисование сцены и сколько в ожидании вертикальной синхронизации? Я попытался сделать следующее:
start = clock();
drawstuff();
glFinish();
end = clock();
SwapBuffers();
swapend = clock();
но это, кажется, не работает, по крайней мере, с моим аппаратным и водителем, потому что end
и swapend
всегда одинаковы.
Я пробовал практически то же самое, и у меня разные результаты с разными моделями графических карт (особенно с разными брендами - у меня есть ATI HD 4250M, ATI HD 4650, Nvidia GT 640 и Nvidia GTX 680). Вывод, который я получил, заключается в том, что это зависит от реализации, или что нет способа получить эти времена без специального решения, чтобы получить время прямо от драйвера. –
Вы тоже получаете 'swapend == end'? –
Да, на 4250M. GT 640 у меня разные значения. Остальные, с которыми я не могу вернуться прямо сейчас, поскольку они - более высокие конечные карты, и я действительно не уделяю слишком много внимания этим критериям. –