【问题标题】:Rendering DirectX 3D graphics onto an Image directly, using C#使用 C# 将 DirectX 3D 图形直接渲染到图像上
【发布时间】:2010-12-07 21:57:23
【问题描述】:

我正在进行的项目需要能够转换图像的 4 个角中的任何一个。由于 GDI+ 很遗憾没有此功能,因此我们正在使用 DirectX 的 3D 图形。

虽然我有一个纹理在屏幕上成功显示的方形网格,但我需要能够从此渲染生成图像,并将背景设置为透明。有没有办法有效地实现这一目标?

最好不要使用控件来初始化设备。或者,我不介意创建一个自定义的、不可见的控件来为我生成图像。

编辑

实际上,我刚刚意识到透明背景严格来说是没有必要的,但它会对我们项目的性能有所帮助。

无论如何,我在做这样的事情时很幸运,但它太慢了。也许有更好的方法?

// 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);

【问题讨论】:

  • 我注意到 Surface 构造函数接受了一个位图。如果我在内存中构建了一个带有位图的 Surface,渲染到这个 Surface 是否也会更新持有的位图?
  • 我想知道用相同的 Stream 信息构造一个 Surface 和一个 Bitmap 是否也可以工作......

标签: c# image directx rendering


【解决方案1】:

如果您使用 D3D 对屏幕进行最终渲染,那么您可以使用渲染到纹理轻松完成您所说的事情。

【讨论】:

  • 我会试着研究一下,但如果你不介意,你能提供几个例子吗?
猜你喜欢
  • 1970-01-01
  • 2017-09-29
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 2013-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多