Jump to content

dxDrawImage Не освобождает память


Recommended Posts

Суть вопроса в названии топика. После отрисовки огромного кол-ва картинок в рендертаргет, функция сжирает до гигабайта видеопамяти, которую потом никак не освобождает. Картинки рисуются единожды, но даже спустя большое кол-во времени память не освобождается, вариант с DxTexture не актуален, т.к занимает куда больше времени, что очень критично в моей ситуации. Как быть? Это какой-то баг, или так и должно быть? 

Link to comment
  • 1 month later...
  • Other Languages Moderators

Может стоит рисовать на одном RT все текстуры а какую-то часть отрисовывать потом через
https://wiki.multitheftauto.com/wiki/DxDrawImageSection

как вариант

вообще надо детальнее смотреть (код и т.д), желательно бы ещё протестить на разных версиях мта.
 

Edited by Kenix
Link to comment

Делать Атласы или использовать .DDS заранее/грузить в R8G8B8A8 (ARGB). Этого не исправить, использовать только DxTexture.

Текстурный атлас - это большое изображение или "атлас", который содержит много изображений меньшего размера, каждое из которых является текстурой для какой-то части объекта.
Подтекстуры можно накладывать путём указания текстурных координат на атласе, то есть выбирая только определённую часть изображения. В приложениях, в которых часто используются мелкие текстуры, более эффективно хранить текстуры в текстурном атласе, так как:

Позволяет сократить количество смен состояний до одного для всего атласа.
Уменьшает количество занятых текстурных слотов до одного для всего атласа.
Минимизируется фрагментация видеопамяти.
Появляется возможность использования NPOT "текстур" (Т.е. атлас будет соблюдать Power of Two, а его элементы можно делать произвольного размера).

Однако, использование атласов может приводить к возникновению новых проблем:
Cовмещение краёв подтекстур становится нетривиальной задачей.
Становится сложно или невозможно использовать мипмаппинг
При использовании фильтрации текстуры необходимо добавлять отступы, чтобы соседние подтекстуры не смешивалась с нужной.
Создание атласов вручную может быть трудоёмко, поэтому потребуется использовать специальные программы для генерирования атласов.
Возникают небольшие потери памяти, так как часть атласа может быть не занята текстурами.

 

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...