Я пытаюсь реализовать очень базовое отложенное затенение в DirectX9. У меня есть возможность прямо использовать только две цели рендеринга (задний буфер и другая текстура). Поэтому я могу отображать нормали или глубину, но не обе. Мой вопрос: может кто-нибудь объяснить, как сделать более чем одну цель текстуры. Я был под впечатлением, что могу просто использовать что-то вроде кода ниже. Он работает только в том случае, если индексы равны нулю, что, вероятно, означает, что одна из поверхностей не записывается.Несколько целей визуализации в DirectX9
d3dDevice->SetRenderTarget(0, surfaceDepth);
d3dDevice->SetRenderTarget(1, surfaceNormal);
Я получаю сообщение: Direct3D9: (WARN): не может сделать к цели визуализации, который также используется в качестве текстуры. Цель рендеринга была обнаружена как связанная, но не могла определить, действительно ли текстура использовалась при рендеринге.
Я знаю, что, возможно, есть несколько вещей, которые могут быть связаны с этим сообщением ... Я думаю, если кто-то может объяснить, как правильно использовать несколько целевых индексов рендеринга. Также вы меняете технику для каждой цели рендеринга. Прямо сейчас у моего шейдера есть «обычная техника» и «техника глубины» и «техника после обработки» для трубопровода.
Спасибо за ваше время.
здесь некоторый код:
SetTransforms();
d3dDevice->SetRenderTarget(0, surfaceDepth);
HR(d3dDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER | D3DCLEAR_TARGET, 0xff000000, 1.0f, 0));
scenes[sceneIndex]->setTechnique("depthTech");
scenes[sceneIndex]->render(dt);
d3dDevice->SetRenderTarget(1, surfaceNormal);
HR(d3dDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER | D3DCLEAR_TARGET, 0xff000000, 1.0f, 0));
scenes[sceneIndex]->setTechnique("normalTech");
scenes[sceneIndex]->render(dt);
Вы также установили эти поверхности как текстуры? (в вызове d3dDevice-> SetTexture (...)) – Torious
im установка текстуры с текущим fx. что значит называть заданную текстуру с устройства? Я использовал это первоначально, чтобы развязать текстуру как: pDevice-> SetTexture (0, NULL); // отвязывает текстуру для рендеринга \t pDevice-> SetTexture (1, NULL); // отвязывает текстуру для рендеринга – iEATeVo
nm Я понял это ... я неправильно понял, что происходило за кулисами. – iEATeVo