Как можно удалить объект Vertex Array OpenGL без вызова glDeleteVertexArrays?

Я разрабатываю плагин After Effects, в котором я использую VAO для рендеринга OpenGL. После предварительного просмотра ОЗУ в полноэкранном режиме VAO с дескриптором номер 1 каким-то образом удаляется (glGenVertexArrays генерирует 1 снова). Странно то, что шейдеры и кадровые буферы все еще действуют, поэтому не весь контекст OpenGL сбрасывается. Кто-нибудь знает, что может быть причиной этого?

2 ответа

Решение

Итак, проблема заключалась в использовании GLFW для получения контекста OpenGL. Как только я переключился на WGL, это сработало.

Наиболее вероятным объяснением является то, что ваш плагин получает полностью новый контекст OpenGL каждый раз, когда происходит. Если ваш контекст OpenGL поделился своим пространством имен "список" с другим контекстом "кэширования", и это совместное использование восстановлено для нового контекста, вы наблюдаете это поведение.

Странно то, что шейдеры и кадровые буферы все еще действуют, поэтому не весь контекст OpenGL сбрасывается.

При установлении совместного использования пространства имен контекста OpenGL некоторые виды объектов совместно используются, то есть увеличивают свои "внутренние счетчики ссылок" (вы не можете напрямую обращаться к ним) для каждого участвующего контекста, а другие нет. Объекты, которые содержат данные в любой форме (текстуры, буферные объекты, шейдеры), являются общими, в то время как объекты абстракции, которые содержат состояние (среди них объекты массива и объекты кадрового буфера), не являются общими.

Таким образом, если будет создан новый контекст и будет создан общий доступ к пространству имен с контекстом кэша, вы увидите все текстуры, шейдеры и т. Д., Которые вы создали ранее, а VAO и FBO исчезнут.

Если вы хотите поймать эту ситуацию, используйте wglGetCurrentContext чтобы получить дескриптор ОС. Вы можете смело ставить ручку окна на uintptr_t целочисленный тип, поэтому для отладки вы можете вывести значение дескриптора и посмотреть, не изменится ли оно.

Другие вопросы по тегам