在XNA和c#中计算某种颜色的像素

时间:2012-08-20 15:19:31

标签: c# xna buffer pixel

这是我在这里的第一篇文章,我非常绝望。

我的问题是我应该为客户做一个游戏(更多的朋友喜欢这种类型的东西所以没有工资:(但是工作就职,我说我可以做到,建立代表和所有那些)

即时使用XNA 4,因此使用C#。

现在我需要找出一种方法来计算某种颜色的像素,黑色是具体的。而已。 我画了一堆精灵,它们是 NOT 的黑色。其中一些是UI,但它们都在屏幕的一侧,所以我应该能够忽略这些像素吗?

我想我应该能够在完成所有绘制调用后读取缓冲区。但我找不到任何互联网的东西(这是可读的)告诉我这是否可能。 读取是我感兴趣的像素的颜色是我需要做的。让我们说从宽度50到窗口边缘的所有东西。

C#和XNA 4答案是我需要的。 你是否给我一个银盘上的答案,或指向我的方向,告诉我如何做它的各个部分。

作为一名程序员,我仍然算作一个菜鸟,只是......一个训练有素的菜鸟,所以我可能会对你的优秀答案提出愚蠢的问题:)

1 个答案:

答案 0 :(得分:3)

您应该可以使用GraphicsDevice.ResolveBackBuffer() 将屏幕复制到ResolveTexture2D。然后,您可以使用Texture2D.GetData()将纹理的颜色数据存储在Color []数组中。

ResolveTexture2D texture = new ResolveTexture2D(
    graphics.GraphicsDevice,
    graphics.GraphicsDevice.PresentationParameters.BackBufferWidth,
    graphics.GraphicsDevice.PresentationParameters.BackBufferHeight,
    1,
    graphics.GraphicsDevice.PresentationParameters.BackBufferFormat);

Color[] colorData = new Color[texture.Width * texture.Height];
texture.GetData<Color>(colorData);

从那里你应该可以做你的事情来计算颜色而忽略边缘像素。