Динамическое изменение размера текстуры на лету

Я использую RenderTarget2D, чтобы нарисовать свою карту перед тем, как отобразить ее на экране, поскольку она меняется очень редко, а сама карта состоит из МНОЖЕСТВА очень маленьких тайлов. Поэтому вместо того, чтобы отрисовывать все тайлы в буфер каждый кадр, я рисую их в RenderTarget2D, который затем рисую в буфере.

Мой вопрос касается «текстуры» RenderTarget2D. Если проигрыватель должен был изменить размер окна, с которым я хочу хотя бы немного поиграть, как правильно изменить объект RenderTarget2D в отношении размеров?

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

texMap = new RenderTarget2D(GraphicsDevice, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height);

person Mythics    schedule 13.12.2012    source источник
comment
Обратите внимание, что я на самом деле не понимаю, что делаю, поэтому следует упомянуть, что мой текущий метод довольно плохой, поскольку он может вызвать утечку памяти. Возможно, мне нужно вручную отменить выделение RenderTarget2D перед его воссозданием?   -  person Mythics    schedule 13.12.2012


Ответы (1)


Невозможно изменить размер цели рендеринга после ее создания. Вызовите Dispose() для существующей цели рендеринга, если она существует, а затем создайте новую.

person Cole Campbell    schedule 13.12.2012