2014-11-27 3 views
0

Был передан набор библиотеки рендеринга, который был закодирован в библиотеке OSG и запущен в среде Window.Ожидание выхода GLContext

В моей программе средство визуализации существует как объект-член в моем базовом классе в C++. В моей функции инициализации класса я сделал бы все необходимые шаги для инициализации рендерера и воспользуюсь функцией, предоставляемой соответствующим классом визуализатора.

Однако, я попытался удалить мой базовый класс, я предположил, что объект-объект рендеринга будет уничтожен вместе с ним. Однако, когда я создал другой экземпляр класса, программа потерпит крах, когда я попытаюсь получить доступ к функции рендеринга в рендерере.

вопросил о некоторых мнений по этому вопросу, и было сказано, что в Windows, при удалении класса, визуализатор должен был бы освободить его glContext, и это может быть неопределимость время в среде Windows, в ожидании от установки оборудования

Является это так? Если да, то какие шаги я мог бы предпринять помимо изменения исходного кода рендеринга (если бы я мог его получить), чтобы решить проблему?

Благодаря

ответ

1

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

1

Ваша проблема больше похожа на резьбовой конструктор/деструктор или operator=, а затем вопрос с GL.

  • его просто догадывался без фактического кода см/тест
  • Скорее всего, вы обращаетесь уже удалили указатель где-то
  • чек все динамические переменные и указатели внутри вашего класса

Имел аналогичные проблемы в прошлом, поэтому их проверяют

Другой возможной причиной

  • если вы код сообщения с потоками
  • и доступ к визуальным системным вызовам или объектам в потоках вместо кода окна
  • , что может испортить что-то в ОС и создавать неожиданные сбои ...
  • по крайней мере, на окнах