这是我在这里的第一篇文章,我非常绝望。
我的问题是我应该为客户做一个游戏(更多的朋友喜欢这种类型的东西所以没有工资:(但是工作就职,我说我可以做到,建立代表和所有那些)
即时使用XNA 4,因此使用C#。
现在我需要找出一种方法来计算某种颜色的像素,黑色是具体的。而已。 我画了一堆精灵,它们是 NOT 的黑色。其中一些是UI,但它们都在屏幕的一侧,所以我应该能够忽略这些像素吗?
我想我应该能够在完成所有绘制调用后读取缓冲区。但我找不到任何互联网的东西(这是可读的)告诉我这是否可能。 读取是我感兴趣的像素的颜色是我需要做的。让我们说从宽度50到窗口边缘的所有东西。
C#和XNA 4答案是我需要的。 你是否给我一个银盘上的答案,或指向我的方向,告诉我如何做它的各个部分。
作为一名程序员,我仍然算作一个菜鸟,只是......一个训练有素的菜鸟,所以我可能会对你的优秀答案提出愚蠢的问题:)
答案 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);
从那里你应该可以做你的事情来计算颜色而忽略边缘像素。