Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C语言将DirectX 3D图形直接渲染到图像上#_C#_Image_Directx_Rendering - Fatal编程技术网

C# 使用C语言将DirectX 3D图形直接渲染到图像上#

C# 使用C语言将DirectX 3D图形直接渲染到图像上#,c#,image,directx,rendering,C#,Image,Directx,Rendering,我正在从事的项目需要能够变换图像的4个角中的任何一个。不幸的是,由于GDI+没有这种功能,我们不得不使用DirectX的3D图形 虽然我有一个在屏幕上成功显示纹理的方形网格,但我需要能够从这个渲染生成一个图像,背景设置为透明。有没有办法有效地实现这一点 最好,我不想使用控件初始化设备。或者,我不介意创建一个自定义的、不可见的控件来为我生成一个图像 编辑: 事实上,我刚刚意识到透明的背景是严格没有必要的,但它会有助于我们的项目的性能一点 不管怎么说,我很幸运做了这样的事情,但是速度太慢了。也许有更

我正在从事的项目需要能够变换图像的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);

如果您使用D3D进行最终的屏幕渲染,那么您就可以轻松地使用“渲染到纹理”(render to texture)完成所说的操作。

我会尝试研究它,但如果您不介意,可以提供一些示例吗?我注意到曲面构造函数采用了位图。如果我在内存中构建了一个带有位图的曲面,那么对该曲面的渲染是否也会更新保存的位图?我想知道构建一个具有相同流信息的曲面和位图是否也会起作用。。。