Проверьте все используемые расширения OpenGL - PullRequest
2 голосов
/ 28 февраля 2011

Я использую GLEE в своем приложении, и все нормально работает на обычной Windows.

Однако при работе в режиме виртуализации мое приложение не работает должным образом.Либо он падает, либо просто становится черным.Вероятно, это связано с отсутствием какого-либо расширения OpenGL.Я попытался определить все используемые расширения и проверить во время запуска программы, чтобы он предупреждает пользователя.Это сработало в случае аварии.Тем не менее, в случае рендеринга черного я не получаю предупреждение о пропущенном расширении.Я подозреваю, что это потому, что я пропустил проверку на некоторое расширение.Так что мой вопрос:

Есть ли какой-нибудь хороший способ идентифицировать все расширения OpenGL, которые используются в приложении, чтобы можно было добавлять проверки для них?

Ответы [ 2 ]

1 голос
/ 28 февраля 2011

Возможно, но это будет немного работы.

GLEE предлагает ленивую загрузку, поэтому вы должны иметь возможность тривиально изменить ее, чтобы регистрировать каждую вызываемую функцию. Ленивый код загрузки (я не смотрел на это, по общему признанию, но это, вероятно, что-то подобное), вероятно, выглядит примерно так:
if (funcptr == 0) {_ _ glee_load_fp (funcptr, _ _ FUNCTION _ _)} funcptr (арг); .

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

0 голосов
/ 28 февраля 2011

Вы также можете посмотреть на GLEW для расширений.

Он предоставляет макросы для запроса реализованных расширений.

http://glew.sourceforge.net/basic.html

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