XNA Content.Load () Использование памяти - PullRequest
5 голосов
/ 19 августа 2010

В XNA при вызове Content.Load () для загрузки ресурса, если вы загружаете один и тот же ресурс в несколько объектов (т. Е. Текстура для снаряда, которого может быть много), вы получаете копию для каждого объекта или система просто внутренне ссылается на одну и ту же память для каждого из них?

Я осознавал, что наличие отдельного объекта Texture2D в каждом элементе может быть проблемой с памятью.

Ответы [ 3 ]

8 голосов
/ 19 августа 2010

ContentManager будет кэшировать объект и возвращать ссылку на этот объект, когда вы попытаетесь загрузить его снова.

3 голосов
/ 20 августа 2010

Вам потребуется создать новый объект Texture2D и просто скопировать измененные данные в новую текстуру с помощью метода SetData:
http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.texture2d.setdata.aspx

3 голосов
/ 19 августа 2010

Да, изменение данных текстуры изменит все текстуры, которые ссылаются на эти данные.

Если вам нужно несколько файлов, скопируйте исходный файл и загрузите разные версии.

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