1

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

4

3 回答 3

0

这种技术被称为冒名顶替者。

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

Gamasutra 文章

于 2013-05-14T10:18:05.027 回答
0

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

于 2013-05-14T12:37:20.207 回答
0

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

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;
于 2015-08-22T15:14:51.927 回答