Рендеринг DirectX 3D-графики непосредственно на изображение с использованием C#
Проект, над которым я работаю, требует возможности трансформировать любой из 4 углов изображения. Поскольку GDI+, к сожалению, не имеет этой возможности, мы прибегаем к использованию 3D-графики DirectX.
Хотя у меня есть квадратная сетка с текстурой, которая успешно отображается на экране, мне нужно иметь возможность генерировать изображение из этого рендеринга с прозрачным фоном. Есть ли способ эффективно достичь этого?
Желательно, чтобы я делал это без использования элемента управления для инициализации устройства. В качестве альтернативы я не возражаю против возможности создания собственного невидимого элемента управления, который будет генерировать для меня изображение.
Редактировать:
На самом деле, я только что понял, что прозрачный фон строго не нужен, но это немного поможет производительности нашего проекта.
Во всяком случае, мне посчастливилось сделать что-то подобное, но это слишком медленно. Возможно, есть лучший метод?
// Create a surface to render an image to
Surface mSurface = mDevice.GetRenderTarget(0);
// Render the visualization
mDevice.Clear(ClearFlags.Target, Color.Transparent, 1.0f, 0);
mDevice.BeginScene();
/* Do some amazing stuff */
// Exit rendering
mDevice.EndScene();
mDevice.Present();
// Render the bitmap images
GraphicsStream mGraphics = SurfaceLoader.SaveToStream(
ImageFileFormat.Bmp, mSurface);
Image mImage = new Bitmap(mGraphics, false);
1 ответ
Хорошо, если вы используете D3D для окончательного рендеринга на экран, вы можете легко делать то, о чем вы говорите, используя рендеринг в текстуру.