Как получить цвет и координаты (x, y) из Texture2D XNA c #? - PullRequest
2 голосов
/ 02 марта 2012

То, что я пытаюсь сделать, - это проверить идеальное пиксельное столкновение с двумя текстурами, например, с черными краями: одна из этих текстур - круг, вторая - треугольник или прямоугольник.

это мой код, который дает мне только массив цветов без координат, которые мне нужны

Color[] playerColorArray = new Color[texturePlayer.Width * texturePlayer.Height];
Color[] secondColorArray = new Color[secondTexture.Width * sencondTexture.Height];
texturePlayer.GetData(playerColorArray);
secondTexture.GetData(secondTextureArray);

и мой вопрос заключается в том, как получить координаты из Texture2D для каждого пикселя, которые являются черными в этой Texture2D.

спасибо за продвижение:)

Ответы [ 2 ]

4 голосов
/ 02 марта 2012

У вас уже есть массив цветов, поэтому вам нужно только определить координаты в 2D каждого из пикселей в ваших массивах.

в Урок Riemers (который я рекомендую), это сделано так:

    Color[,] colors2D = new Color[texture.Width, texture.Height];
     for (int x = 0; x < texture.Width; x++)
     {
         for (int y = 0; y < texture.Height; y++)
         {
             colors2D[x, y] = colors1D[x + y * texture.Width]; 
         }
     }
1 голос
/ 08 июня 2014

Лично я скорее пишу методы расширения:

public static class Texture2dHelper
{
    public static Color GetPixel(this Color[] colors, int x, int y, int width)
    {
        return colors[x + (y * width)];
    }
    public static Color[] GetPixels(this Texture2D texture)
    {
        Color[] colors1D = new Color[texture.Width * texture.Height];
        texture.GetData<Color>(colors1D);
        return colors1D;
    }
}
...