Wohlstand
@Wohlstand
Инженер-программист С++

Как обеспечить работу с текстурами OpenGL с очень маленькой видеопамятью?

Имеется игра написанная на C++, использующая OpenGL. В игре обильно используются различные текстуры на общий объём 128~256 Мегабайт видеопамяти. При работе на компьютерах, у которых стоит видеокарта с объёмом видеопамяти меньше 128 мегабайт, многие текстуры отображаются в виде белых полигонов, что значит - текстуры не прогрузились.
Аналогичный результат я получаю при запуске игры из под VirtualBox, где видеопамяти выделено заведомо мало. Однако, я заметил, что как только я запускаю Qt Creator (среду разработки в составе Qt), который частично использует OpenGL для отрисовки своего интерфейса, магическим образом даёт возможность запускаться игре корректно с полной поддержкой всех текстур.

Вопрос заключается в том, как мне компенсировать недостаток видеопамяти для текстур на более слабых видеокартах или как мне включить режим программного рендеринга если видеокарта не способна корректно работать с OpenGL или имеет слишком маленькую оперативную память?
Проблема с игрой возникла на компьютере с Windows XP у которого 128 МБ видеопамяти (Intel(R) 82865G) и 512 МБ оперативной памяти. На аналогичном компьютере с большей видеопамятью игра работает корректно. Проблема так же возникает на VirtualBox даже не смотря на 256 мегабайт видеопамяти.

Приложение кросс-платформенное, использую SDL2, игру собираю под Linux (G++ >=4.7), Windows (MinGW >=4.7) и Mac OS X (clang++ >=3.6).
  • Вопрос задан
  • 856 просмотров
Решения вопроса 1
Дело может быть даже не в количестве видео памяти. Возможно первая видеокарта не поддерживает, какоето разширение, а вторая поддерживает, вот и рисует нормально. Я не помню как он называется, но у моего колеги такое было.

Ну а если проблема все же в обьеме, то можно мониторить сколько памяти вы занимаете и динамически выгружать одни текстуры, которые в данный момент не нужны, загружать необходимы для рендера. Это конечно просадит FPS, но что поделаеш.
Как вариант переделать уровни, так чтобы уменьшить количество текстур.

Чисто для теста можно уменьшить размер всех текстур и посмотреть, что получится.

P.S. У вас все размеры текстур кратны степени двойки?
P.S.S. Прикол с QtCreator склоняет меня к мнению, что это проблемы с поддерживаемыми разширениями у самой видеокарты.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы