0

这是我在这里的第一篇文章,我相当绝望。

我的问题是我应该为客户制作游戏(更多的是朋友喜欢这种类型的东西,所以没有薪水:(但是我找到了一份工作,我说我可以做到,建立代表等等)

我使用 XNA 4,因此使用 C#。

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

我想一旦我完成了所有的绘图调用,我应该能够读取缓冲区。但我只是找不到任何互联网资料(可读)告诉我这是否可能。读取是我感兴趣的像素的颜色是我需要做的。例如,让我们说从宽度 50 到窗口边缘的所有内容。

C# 和 XNA 4 答案是我需要的。无论您是在银盘上给我答案,还是向我指出可以告诉我如何做各个部分的事情的方向。

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

4

1 回答 1

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);

从那里你应该能够做你的事情来计算颜色,同时忽略边缘像素。

于 2012-08-20T15:32:17.827 回答