Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Скорость выполнения отдельных функций


Автор: sgi1981 11.12.2008, 02:11
Недавно купил новую видеокарту (NVIDIA GeForce 9600 GT). Рисует быстро.
Вот только функции OpenGL типа glIsEnabled, glGetIntegerv, glGetFloatv, в общем все те функции которые возвращают значения параметров режимов, выполняются удивительно долго, и при этом загружается центральный процессор. Ошибок OpenGL нет. И что главное, я использую эти функции для управления камерой (перемещение, поворот камеры), и когда я вожу мышь для того чтобы повернуть камеру, я вижу что камера даже не успевает за мышью. На всех предыдущих версиях карт и драйверов этого тормоза не было. Но теперь у меня стоит Windows 64-bit, ну и соответственно драйвер подходящий. Я даже пробовал ставить драйвер и тот что был на диске вместе с видеокартой, и тот что скачал из интернета, сейчас стоит драйвер скачанный из интернета, результат - те же тормоза при выполнении функций OpenGL возвращающих значения рабочих параметров настроек.

Автор: sgi1981 12.12.2008, 13:55
Сейчас я вообще обнаружил нечто интересное. Оказывается, что функции типа glIsEnabled, glGetIntegerv, glGetFloatv, вообще не тормозят, а тормозят какие-то другие функции выполняющиеся после вызовов этих. Для того, чтобы в этом убедиться, я добавил цикл, в котором последовательно вызывалась функция glIsEnabled с разными параметрами. Причем этот цикл в первом эксперименте я встроил до вызова SwapBuffers, а во втором эксперименте - после него.
В 1 эксперименте.
Если в результате выполнения всех итераций цикла функция glIsEnabled вызывалась не менее 150 раз, то тормоза исчезают вообще ! Причем и процессор не загружен также. Если же менее 150 раз, то и процессор загружен и тормоза.
Во 2 эксперименте.
Если в результате выполнения всех итераций цикла функция glIsEnabled вызывалась не менее 150 раз, то камера не тормозит, и процессор не загружен. Если же менее 150 раз, то камера не тормозит, но процессор загружен.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)