Performance 如何使用XNA从模型生成位图?

Performance 如何使用XNA从模型生成位图?,performance,model,bitmap,xna,Performance,Model,Bitmap,Xna,我希望使用XNA-4.0从3D模型的摄影机视图动态创建图像(作为纹理2D)。我可以设置一个模型和相机来获得我想要的视图,但是因为我需要同时为许多大型复杂的模型做每一帧,为了获得最佳性能,我认为如果我能以某种方式将该视图绘制或写入位图一次,然后反复将其显示在屏幕上,那么计算成本将大大降低。这种技术被称为冒名顶替 这里是DirectX 9的链接,适应XNA应该不会太难 使用RenderTarget将视口内容放入纹理中。创建它,在绘制之前绑定它,然后取消绑定并调用GetTexture。它们非常快,甚至

我希望使用XNA-4.0从3D模型的摄影机视图动态创建图像(作为纹理2D)。我可以设置一个模型和相机来获得我想要的视图,但是因为我需要同时为许多大型复杂的模型做每一帧,为了获得最佳性能,我认为如果我能以某种方式将该视图绘制或写入位图一次,然后反复将其显示在屏幕上,那么计算成本将大大降低。

这种技术被称为冒名顶替

这里是DirectX 9的链接,适应XNA应该不会太难


使用RenderTarget将视口内容放入纹理中。创建它,在绘制之前绑定它,然后取消绑定并调用GetTexture。它们非常快,甚至可以同时使用(MRT-多渲染目标,afaik)。例如,我使用四个渲染目标将数据馈送到延迟渲染管道中。

对于其他正在寻找简单示例的人:-

int _newTextureWidth = 800;
int _newTextureHeight = 450;

Texture2D _newTexture = new Texture2D(GraphicsDevice, _newTextureWidth, _newTextureHeight);
RenderTarget2D _target = new RenderTarget2D(GraphicsDevice, _newTextureWidth, _newTextureHeight);

// Point the GraphicsDevice to your new RenderTarget so that all Draw calls output here.
GraphicsDevice.SetRenderTarget(_target);
GraphicsDevice.Clear(Color.Transparent);

// Do DrawModel and any other Draw calls here

// Reset the GraphicsDevice to ouput to the Screen again;
GraphicsDevice.SetRenderTarget(null); 

//Finally simply cast to your new Texture2D
_newTexture = (Texture2D)_target;

这是一篇很棒的文章,它完全涵盖了我试图完成的内容,但是除了关于DirectX之外,它实际上没有提供任何代码示例(所有指向代码的链接都已断开)。不错的概述。我认为渲染目标是我需要使用的。你没有一个简单的例子来说明它的用法,是吗?