Допустим, у меня есть простой холст WPF, на котором я рисую несколько кнопок и фигур с помощью xaml. Я хотел бы отрендерить холст в текстуру Direct3d, чтобы иметь доступ к пикселям изнутри GPU.
RenderTargetBitmap позволяет мне выполнять программный рендеринг. но это будет ограничивать производительность, так как мне придется вручную копировать пиксели туда, где я хочу.
Я также рассмотрел возможность использования настраиваемого эффекта шейдера на холсте. но насколько я знаю, с помощью direct3d 9 невозможно записать в отдельную текстуру.
Так возможно ли это вообще? если да, то как?
@ChrisW. но это потребует дорогостоящего копирования в системную память (и обратно, если вы хотите использовать ее в качестве текстуры direct3d)
Хм, не уверен, в каком состоянии было мое настроение пару месяцев назад, когда я делал комментарий, но все, что представляет собой растровый пиксель *, будет препятствием для производительности. Мне было бы любопытно, в каком случае вы хотите превратить холст элементов управления в текстуру в первую очередь, но, надеюсь, с тех пор вы нашли средство?
@ChrisW. Я хочу иметь возможность использовать эту текстуру в качестве фона для HMD (дисплей с креплением на голову). Другим вариантом использования может быть включение WPF xaml для создания простого 2D-интерфейса поверх существующей игры / приложения D3D. На данный момент я пытаюсь сделать то же самое с помощью AvaloniaUI. он вроде работает, но ему не хватает зрелости WPF.





Я не пробовал раньше, но предполагаю, что вы можете визуализировать свой холст или что-то еще как растровое изображение (так как это все ваши текстуры в любом случае) через
RenderTargetBitmap, а затем преобразовать это в легитимную текстуру.