Проблема с отображением текстур в OpenGL в XP против 7 - PullRequest
0 голосов
/ 12 ноября 2010

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

Я тестировал эту проблему на нескольких 64-битных компьютерах с Windows 7, и все они прекрасно работают.

Установка программы на 32-битной машине с Windows XP вызывает проблему. Ошибка не выдается. Программа не падает. Текстуры просто не рисуются на экране. Все остальные простые формы все еще там, и ни одна из функциональных возможностей программы не затронута.

Я тестировал одну и ту же проблему на 32-битных и 64-битных виртуальных машинах Windows XP, и та же проблема возникает в обеих. Это после установки самого последнего обновления и установки .net Framework 3.5. Это наводит меня на мысль, что проблема не в x64 / x86, а в самой Windows XP.

Есть ли в OpenGL некоторые функции, которые Windows XP просто не поддерживает? Эта идея кажется мне странной, и я не вижу в этом проблемы.

Единственное возможное объяснение, которое я придумал, заключается в том, что, возможно, порядок вызовов для инициализации отличается в XP и 7, но мои тесты ничего не доказали в любом случае. Геометрия загружается из текстового файла при инициализации, поэтому это кажется другим возможным объяснением

UPDATE

Я провел дальнейшее тестирование на разных компьютерах и обнаружил, что программа работает нормально в 32-разрядной версии Windows 7, но столкнулся с проблемой на другой машине, работающей под управлением 64-разрядной версии Windows 7. Таким образом, я могу заключить, что это не имеет никакого отношения к операционной системе, но есть некоторая переменная, которую я не определил, вызывающая проблему.

Ответы [ 2 ]

1 голос
/ 12 ноября 2010

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

Самая непосредственная особенность, которую я могу придумать, объясняет это отсутствием поддержки текстур не-степени-двух. Это было добавлено довольно давно в OpenGL, но вы все равно можете найти старое оборудование, которое не поддерживает его (и поэтому оборудование не будет поддерживать более свежие версии OpenGL).

Какого размера текстуры не отображаются?

1 голос
/ 12 ноября 2010

Поддерживаемые функции зависят в первую очередь от графического драйвера, а не от самой ОС. По крайней мере, с разумно последним драйвером я не столкнулся с проблемами в XP, хотя (OTOH, у меня есть , пришлось обойти несколько странностей в Windows 7). Возможно, в вашем коде есть некоторые ошибки, которые не всегда отображаются, но трудно угадать без какого-либо кода.

...