gpt4 book ai didi

c# - 在没有 Draw() 的情况下缩放 Texture2D

转载 作者:行者123 更新时间:2023-11-30 17:50:28 24 4
gpt4 key购买 nike

我试图在不使用 Draw() 方法的情况下缩放 Texture2D。原因是在执行进一步的操作之前,我不会绘制 Texture2D。我会将 Texture2D 保存为一个字段。

最佳答案

我不知道您想对图像执行哪种图像处理,但我强烈建议您在执行这些处理之前不要执行缩放。如果有任何可能的话,请在缩放图像之前对其进行处理。 Xna 已经为您处理了缩放的所有肮脏工作。

如果您想执行特定的像素操作,Texture2D.GetData 会为您工作,但数量很少。如果您对数百张图像执行此操作,您将大大降低游戏速度。我强烈建议使用自定义的 Effect 做一些后期处理效果。

编辑:我只是想到了一种按照您想要的方式来做这件事的方法。您可以做的是将缩放后的纹理绘制到 RenderTarget2D 对象,然后从中获取颜色数据并根据需要操作数据。下面是一个例子:

RenderTarget2D renderTarget = new RenderTarget2D(GraphicsDevice, textureWidth, textureHeight, false, GraphicsDevice.PresentationParameters.BackBufferFormat, DepthFormat.Depth24);

GraphicsDevice.SetRenderTarget(renderTarget);

spriteBatch.Begin();
//scale and draw your texture here
spriteBatch.End();

GraphicsDevice.SetRenderTarget(null);

这会将纹理绘制到渲染目标,您稍后可以像绘制任何其他纹理一样绘制它:

spriteBatch.Draw(renderTarget, new Rectangle(), Color.White);

您可以使用 renderTarget.GetData 获取颜色数据,就像您使用 Texture2D 一样,并根据您的喜好对其进行操作。

关于c# - 在没有 Draw() 的情况下缩放 Texture2D,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20748603/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com