Итак, я пытаюсь реализовать некоторую постобработку Direct3D, и у меня возникают проблемы с рендерингом текстур. В общем, моя программа выглядит так:
// Render scene to "scene_texture" (an HDR texture)...
...
device->SetRenderTarget(0, brightpass_surface);
device->SetTexture(0, scene_texture);
// Render "scene_texture" to "brightpass_texture" using full-screen quad.
// This involves passing the quad geometry through a brightpass shader.
...
device->SetRenderTarget(0, ldr_surface);
device->SetTexture(0, brightpass_texture);
// Render "brightpass_texture" to "ldr_surface" using full-screen quad...
Я пропустил некоторые части, т.к. есть изрядное количество кода (я просто пытаюсь понять общую идею). К сожалению, приведенное выше приводит к пустому экрану. Вот что я хочу, чтобы произошло:
- Рендеринг сцены в текстуру (HDR)
- Визуализируйте эту текстуру во вторую текстуру ЧЕРЕЗ шейдер BrightPass.
- Рендерим вторую текстуру на видимую поверхность LDR.
Обратите внимание, что если я изменю последнюю строку выше с
device->SetTexture(0, brightpass_texture);
to
device->SetTexture(0, scene_texture);
Тогда все работает. Обратите внимание, что я пытался пропустить шейдер BrightPass и просто передать пиксели, но это тоже не работает.