nsight — несовместимость при отладке OpenGL 4.2

Всякий раз, когда я пытаюсь отладить шейдер в nvidia nsight, я получаю следующую несовместимость в файле nvcompatlog.

glDisable (cap = 0x00008620)
        glMatrixMode
        glPushMatrix
        glLoadIdentity
        glOrtho
        glBegin
        glColor4f
        glVertex2f
        glEnd
        glPopMatrix

Это сбивает с толку, поскольку я использую профиль ядра 4.2 и не использую устаревшие или фиксированные вызовы функций. На данном этапе я просто рисую на экране простой 2D-квадрат и могу гарантировать, что ни одна из перечисленных выше функций не используется.

Меня действительно беспокоит то, что я новичок в SDL и GLEW. Я не уверен, какие функции они используют за кулисами. Я искал в Интернете и нашел других, которые используют SDL, GLEW и Nvidia nsight. Это приводит меня к мысли, что я что-то упускаю из виду. Ниже приведена сокращенная версия того, как я инициализирую SDL и GLW.

SDL_Init(SDL_INIT_EVERYTHING);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1);

SDL_Window *_window;
_window = SDL_CreateWindow("Red Square", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED  , 200, 200, SDL_WINDOW_OPENGL);

SDL_GLContext glContext = SDL_GL_CreateContext(_window);
glewExperimental = GL_TRUE;
GLenum status = glewInit();
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);

В реализации у меня есть проверка ошибок почти после каждого вызова. Я исключил его из примера, чтобы уменьшить количество беспорядка. Все вышеперечисленное не приводит к ошибкам и возвращает допустимые объекты.

После инициализации glewGetString(GLEW_VERSION) возвращает 4.2.0 NVIDIA 344.75, glewGetString(GLEW_VERSION) возвращает 1.11.0, а GLEW_VERSION_4_2 возвращает true.

Любая идея о том, как я могу использовать SDL и GLEW и не использовать ни одну из этих платформ для вызова устаревших функций?

** Изменить ** Я экспериментировал с Dependency Walker здесь. Глядя на вызовы через Opengl32.dll, ничего из перечисленного не отображается как вызываемый модуль.


person Freddy    schedule 19.12.2014    source источник


Ответы (1)


Для всех, кто заинтересован, Nsight фиксирует все команды, отправленные серверу OpenGL. Не только те, которые выдаются через ваше приложение. Если у вас включено какое-либо FPS или программное обеспечение для записи, они, как правило, используют устаревшие методы отрисовки в буфер кадра. В моем случае это был Riva Tuner, который отображает FPS на экране для любых запущенных игр. Отключение решило мою проблему.

person Freddy    schedule 21.12.2014