Изменение размера текстуры / RT

0

Я пытаюсь удвоить буфер некоторых кадров в моих приложениях. Однако для двойной буферизации требуется изменить размер Texture2D на основе области, в которой я пытаюсь сохранить дополнительный блок данных.

  1. Лучше ли запросить новый CreateTexture2D для каждого региона для двойного буфера?
    • Будет ли изменение размера Texture2D эффективным решением, основанным на изменении размера региона? Не требует изменения размера, чтобы воссоздать ресурсы Texture2D/запросить новый RT.
  2. Или лучше создать Texture2D, являющуюся полной сценой приложения, и использовать только те части, которые необходимы?
    • Это займет слишком много памяти?
    • Можно ли настроить Shader для применения эффектов только в области Texture2D.

Скажем, контекст приложения - это 3D-игра.

Теги:
directx

1 ответ

1
Лучший ответ

Предполагая, что вы подразумеваете двойную буферизацию в контексте первичной цели рендеринга окна, вы должны использовать Swap Chain, которая имеет встроенную поддержку N-буферизации (например, установить BufferCount в 2). Когда изменяется размер окна, вызовите ResizeBuffers.

  • 0
    Это BackBuffer. Я говорю о двойной буферизации с Texture2D.
  • 0
    @ mk1 IDXGISwapChain (см. ссылку выше) инкапсулирует обратный буфер. Вы должны создать цепочку подкачки, получить автоматически созданный задний буфер ( GetBackBuffer() ) и создать для него целевое представление рендеринга.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню