Vrml.EAI.Node pixelTexture = ...;
Vrml.EAI.Field.EventOutSFImage image_changed = (Vrml.EAI.Field.EventOutSFImage)pixelTexture.GetEventOut("image_changed");
int width = image_changed.GetWidth();
System.Console.WriteLine("width = " + width + " pixels");
int height = image_changed.GetHeight();
System.Console.WriteLine("height = " + height + " pixels");
int[] pixels = image_changed.GetPixels();
int intensity, red, green, blue, alpha, i;
switch (image_changed.GetComponents())
{
case 1:
System.Console.WriteLine("components = 1 (intensity)");
i = 0;
for (int y = 0; y < height; ++y)
for (int x = 0; x < width; ++x)
{
System.Console.Write("pixel @ x = " + x + ", y = " + y + ": ");
intensity = pixels[i] & 0xff;
System.Console.WriteLine("intensity = " + intensity);
++i;
}
break;
case 2:
System.Console.WriteLine("components = 2 (intensity, alpha)");
i = 0;
for (int y = 0; y < height; ++y)
for (int x = 0; x < width; ++x)
{
System.Console.Write("pixel @ x = " + x + ", y = " + y + ": ");
intensity = (pixels[i] >> 8) & 0xff;
alpha = pixels[i] & 0xff;
System.Console.WriteLine("intensity = " + intensity + ", alpha = " + alpha);
++i;
}
break;
case 3:
System.Console.WriteLine("components = 3 (red, green, blue)");
i = 0;
for (int y = 0; y < height; ++y)
for (int x = 0; x < width; ++x)
{
System.Console.Write("pixel @ x = " + x + ", y = " + y + ": ");
red = (pixels[i] >> 16) & 0xff;
green = (pixels[i] >> 8) & 0xff;
blue = pixels[i] & 0xff;
System.Console.WriteLine("red = " + red + ", green = " + green + ", blue = " + blue);
++i;
}
break;
case 4:
System.Console.WriteLine("components = 4 (red, green, blue, alpha)");
i = 0;
for (int y = 0; y < height; ++y)
for (int x = 0; x < width; ++x)
{
System.Console.Write("pixel @ x = " + x + ", y = " + y + ": ");
red = (pixels[i] >> 24) & 0xff;
green = (pixels[i] >> 16) & 0xff;
blue = (pixels[i] >> 8) & 0xff;
alpha = pixels[i] & 0xff;
System.Console.WriteLine("red = " + red + ", green = " + green + ", blue = " + blue + ", alpha = " + alpha);
++i;
}
break;
}
|