Несколько целевых объектов отрисовки (Direct3D 9)
Несколько целевых объектов отрисовки (MRT) — это возможность отрисовки на нескольких поверхностях (см. раздел IDirect3D9Surface) с помощью одного вызова draw. Эти поверхности можно создавать независимо друг от друга. Целевые объекты отрисовки можно задать с помощью IDirect3DDevice9::SetRenderTarget.
Несколько целевых объектов отрисовки имеют следующие ограничения:
Все поверхности целевых объектов отрисовки, используемые вместе, должны иметь одинаковую битовую глубину, но могут иметь разные форматы, если не задано ограничение D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS.
Все поверхности нескольких целевых объектов отрисовки должны иметь одинаковую ширину и высоту.
Некоторые реализации не могут выполнять операции постпиксельного шейдера с несколькими целевыми объектами отрисовки, в том числе без смешение, альфа-тест, отсутствие затуманивание, наложение или маскирование, за исключением Z-теста и теста набора элементов. Устройства, которые могут поддерживать операции шейдера после пикселя, устанавливают для бита ограничения значение D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING.
Если задано ограничение D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING, сначала обратитесь к IDirect3D9::CheckDeviceFormat с результатом USAGE_QUERY_POSTPIXELSHADER_BLENDING для конкретного формата поверхности. Если задано значение false, операции смешивания постпиксельного шейдера не будут доступны для конкретного формата поверхности. Если значение равно true, ожидается, что устройство будет применять одно и то же состояние ко всем целевым объектам одновременной отрисовки следующим образом:
- Альфа-смесь. Значение цвета в oCi смешивается с целевым объектом отрисовки ith.
- Альфа-тест. Сравнение будет выполняться с oC0. Если сравнение завершается неудачно, проверка пикселей завершается для всех целевых объектов отрисовки.
- Туман: целевой объект отрисовки 0 будет запотеваться. Другие целевые объекты отрисовки не определены. Реализации могут использовать одно и то же состояние.
- Dithering: не определено.
Сглаживание не поддерживается.
Некоторые реализации не применяют маску записи выходных данных (D3DRS_COLORWRITEENABLE). Те, которые могут, имеют независимые цветовые маски записи. Это выражается с помощью нового бита возможностей. Количество доступных независимых масок записи цвета будет равно максимальному количеству элементов, которые может использовать устройство.
Новые аппаратные ограничения:
D3DCAPS9.NumSimultaneousRTs
// The value is 1 for all hardware except those that
// can support this feature. It is never 0.
D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS - True if the hardware can support it
D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING - True if the hardware can support it
Связанные темы