среда, 23 марта 2011 г.

IsDebuggerPresent

Сегодня начал играться с компиляцией проекта вкупе с DirectGL в release, чтобы убедиться в работоспособности кода во всех конфигурациях. И сразу сделал открытие: время загрузки шейдеров резко увеличилось (требовалось всего 1-2 секунды)! Я бросился инспектировать код на предмет #ifdef _DEBUG, но никаких зацепок не нашлось. Тогда я пересобрал проект в debug конфигурации, запустил по Ctrl-F5 и о чудо: GLSL шейдеры скомпилировались влёт.

Больше ничего не оставалось, как запустить проект по F5 и наблюдать картину с тормозявой загрузкой шейдеров. Ппц.


2 комментария:

  1. 1. Может быть большой боттлнек в аллокациях (при запуске из-под отладчика вставляется дебажный - и более тормозной - менеджер памяти; например, очищающий память при аллокациях-деаллокациях)

    2. Может быть на каждую компиляцию шейдера загружается-выгружается какая-нибудь DLL-ка - таким страдает d3dx9 последние пару релизов, лечится явным LoadLibrary на d3dx_xx.dll до начала компиляции.

    3. Профайлер скажет правду :)

    ОтветитьУдалить
  2. D3DX здесь не при чём, тормозят функции
    glCompileShader
    glLinkProgram
    при запуске под дебаггером. Проблема явно в драйвере ATI, т. к. под NVidia такого никогда не наблюдалось.

    ОтветитьУдалить