glGenTextures не возвращает имя текстуры - PullRequest
0 голосов
/ 12 апреля 2011

Я создаю игру OpenGL на компьютере с Windows 7, используя VS2010. Кроме того, SDL, QtCore, QtXML и FbxSdk также используются для помощи в разработке. У меня очень специфическая проблема с glGenTextures при работе вне режима отладки. Позвольте мне объяснить.

Когда я компилирую и запускаю приложение в режиме отладки, модели текстурируются и отображаются правильно. Как только я отлаживаю приложение или скомпилирую и запускаю приложение с использованием режима выпуска, текстуры больше не применяются к моделям.

Я отследил проблему до glGenTextures, не дав мне правильное имя. Это также не дает мне никаких ошибок. То, как я загружаю все, выглядит следующим образом:

Модели загружаются как FBX через FbxSdk, необходимые текстуры загружаются по мере загрузки модели. Все модели загружаются в другой поток, я позаботился о том, чтобы нигде не вызывались функции OpenGL, пока этот поток загружает модели. Если я не загружаю модели в другой поток, все работает. Я перепробовал все, что мог придумать, включая остановку основного потока, пока загружались модели, чтобы ничего не гарантировать, если это произойдет, пока загружаются модели. Ничего из этого не работает.

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

1 Ответ

4 голосов
/ 12 апреля 2011

Я могу только догадываться, но разве вы не сделали контекст GL актуальным в потоке загрузки модели? Помните, что контекст OpenGL зависит от потока!

С другой стороны, обычно не рекомендуется использовать один и тот же контекст GL в разных потоках. Либо используйте другой контекст и совместно используйте ресурсы, либо отложите все вызовы GL до основного потока GL.

Разница при использовании режима отладки заключается в том, что VS будет использовать отладочную кучу при отладке, но не будет использовать ее, когда вы просто запускаете отладочную сборку без реальной отладки.

Однако, если вы неправильно понимаете потоки, могут возникнуть всевозможные сумасшедшие побочные эффекты, которые может «скрыть» куча отладки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...