removed alpha channel
This commit is contained in:
parent
5dc41ff29f
commit
e10f2d1617
|
|
@ -33,25 +33,29 @@ int main(void)
|
||||||
Image fudesumiImage = LoadImage("resources/fudesumi.png");
|
Image fudesumiImage = LoadImage("resources/fudesumi.png");
|
||||||
Texture2D fudesumiTexture = LoadTextureFromImage(fudesumiImage);
|
Texture2D fudesumiTexture = LoadTextureFromImage(fudesumiImage);
|
||||||
|
|
||||||
|
Image imageAlpha = ImageFromChannel(fudesumiImage, 3);
|
||||||
|
ImageAlphaMask(&imageAlpha, imageAlpha);
|
||||||
|
Texture2D textureAlpha = LoadTextureFromImage(imageAlpha);
|
||||||
|
|
||||||
Image imageRed = ImageFromChannel(fudesumiImage, 0);
|
Image imageRed = ImageFromChannel(fudesumiImage, 0);
|
||||||
|
ImageAlphaMask(&imageRed, imageAlpha);
|
||||||
Texture2D textureRed = LoadTextureFromImage(imageRed);
|
Texture2D textureRed = LoadTextureFromImage(imageRed);
|
||||||
UnloadImage(imageRed);
|
UnloadImage(imageRed);
|
||||||
|
|
||||||
Image imageGreen = ImageFromChannel(fudesumiImage, 1);
|
Image imageGreen = ImageFromChannel(fudesumiImage, 1);
|
||||||
|
ImageAlphaMask(&imageGreen, imageAlpha);
|
||||||
Texture2D textureGreen = LoadTextureFromImage(imageGreen);
|
Texture2D textureGreen = LoadTextureFromImage(imageGreen);
|
||||||
UnloadImage(imageGreen);
|
UnloadImage(imageGreen);
|
||||||
|
|
||||||
Image imageBlue = ImageFromChannel(fudesumiImage, 2);
|
Image imageBlue = ImageFromChannel(fudesumiImage, 2);
|
||||||
|
ImageAlphaMask(&imageBlue, imageAlpha);
|
||||||
Texture2D textureBlue = LoadTextureFromImage(imageBlue);
|
Texture2D textureBlue = LoadTextureFromImage(imageBlue);
|
||||||
UnloadImage(imageBlue);
|
UnloadImage(imageBlue);
|
||||||
|
|
||||||
Image imageAlpha = ImageFromChannel(fudesumiImage, 3);
|
|
||||||
Texture2D textureAlpha = LoadTextureFromImage(imageAlpha);
|
|
||||||
UnloadImage(imageAlpha);
|
|
||||||
|
|
||||||
|
|
||||||
Image backgroundImage = GenImageChecked(screenWidth, screenHeight, screenWidth/20, screenHeight/20, ORANGE, YELLOW);
|
Image backgroundImage = GenImageChecked(screenWidth, screenHeight, screenWidth/20, screenHeight/20, ORANGE, YELLOW);
|
||||||
Texture2D backgroundTexture = LoadTextureFromImage(backgroundImage);
|
Texture2D backgroundTexture = LoadTextureFromImage(backgroundImage);
|
||||||
|
|
||||||
|
UnloadImage(imageAlpha);
|
||||||
UnloadImage(backgroundImage);
|
UnloadImage(backgroundImage);
|
||||||
|
|
||||||
SetTargetFPS(60); // Set our game to run at 60 frames-per-second
|
SetTargetFPS(60); // Set our game to run at 60 frames-per-second
|
||||||
|
|
|
||||||
|
|
@ -1684,32 +1684,29 @@ Image ImageFromChannel(Image image, int selectedChannel)
|
||||||
selectedChannel = 3;
|
selectedChannel = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
result.format = PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA;
|
result.format = PIXELFORMAT_UNCOMPRESSED_GRAYSCALE;
|
||||||
result.height = image.height;
|
result.height = image.height;
|
||||||
result.width = image.width;
|
result.width = image.width;
|
||||||
result.mipmaps = 1;
|
result.mipmaps = 1;
|
||||||
|
|
||||||
unsigned char *pixels = (unsigned char *)RL_CALLOC(image.width * 2 * image.height, sizeof(unsigned char)); // values 0 to 255
|
unsigned char *pixels = (unsigned char *)RL_CALLOC(image.width * image.height, sizeof(unsigned char)); // values 0 to 255
|
||||||
|
|
||||||
if (image.format >= PIXELFORMAT_COMPRESSED_DXT1_RGB) TRACELOG(LOG_WARNING, "IMAGE: Pixel data retrieval not supported for compressed image formats");
|
if (image.format >= PIXELFORMAT_COMPRESSED_DXT1_RGB) TRACELOG(LOG_WARNING, "IMAGE: Pixel data retrieval not supported for compressed image formats");
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (int i = 0, k = 0; i < image.width*2*image.height; i+=2)
|
for (int i = 0, k = 0; i < image.width * image.height; ++i)
|
||||||
{
|
{
|
||||||
float imageValue = -1;
|
float imageValue = -1;
|
||||||
float imageAlpha = 0;
|
|
||||||
switch (image.format)
|
switch (image.format)
|
||||||
{
|
{
|
||||||
case PIXELFORMAT_UNCOMPRESSED_GRAYSCALE:
|
case PIXELFORMAT_UNCOMPRESSED_GRAYSCALE:
|
||||||
{
|
{
|
||||||
imageValue = (float)((unsigned char *)image.data)[i + selectedChannel]/255.0f;
|
imageValue = (float)((unsigned char *)image.data)[i + selectedChannel]/255.0f;
|
||||||
imageAlpha = 1;
|
|
||||||
|
|
||||||
} break;
|
} break;
|
||||||
case PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA:
|
case PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA:
|
||||||
{
|
{
|
||||||
imageValue = (float)((unsigned char *)image.data)[k + selectedChannel]/255.0f;
|
imageValue = (float)((unsigned char *)image.data)[k + selectedChannel]/255.0f;
|
||||||
imageAlpha = (float)((unsigned char *)image.data)[k + 1]/255.0f;
|
|
||||||
|
|
||||||
k += 2;
|
k += 2;
|
||||||
} break;
|
} break;
|
||||||
|
|
@ -1733,7 +1730,6 @@ Image ImageFromChannel(Image image, int selectedChannel)
|
||||||
{
|
{
|
||||||
imageValue = ((pixel & 0b0000000000000001) == 0)? 0.0f : 1.0f;
|
imageValue = ((pixel & 0b0000000000000001) == 0)? 0.0f : 1.0f;
|
||||||
}
|
}
|
||||||
imageAlpha = ((pixel & 0b0000000000000001) == 0)? 0.0f : 1.0f;
|
|
||||||
|
|
||||||
} break;
|
} break;
|
||||||
case PIXELFORMAT_UNCOMPRESSED_R5G6B5:
|
case PIXELFORMAT_UNCOMPRESSED_R5G6B5:
|
||||||
|
|
@ -1752,7 +1748,6 @@ Image ImageFromChannel(Image image, int selectedChannel)
|
||||||
{
|
{
|
||||||
imageValue = (float)(pixel & 0b0000000000011111)*(1.0f/31);
|
imageValue = (float)(pixel & 0b0000000000011111)*(1.0f/31);
|
||||||
}
|
}
|
||||||
imageAlpha = 1;
|
|
||||||
|
|
||||||
} break;
|
} break;
|
||||||
case PIXELFORMAT_UNCOMPRESSED_R4G4B4A4:
|
case PIXELFORMAT_UNCOMPRESSED_R4G4B4A4:
|
||||||
|
|
@ -1775,79 +1770,60 @@ Image ImageFromChannel(Image image, int selectedChannel)
|
||||||
{
|
{
|
||||||
imageValue = (float)(pixel & 0b0000000000001111)*(1.0f/15);
|
imageValue = (float)(pixel & 0b0000000000001111)*(1.0f/15);
|
||||||
}
|
}
|
||||||
imageAlpha = (float)(pixel & 0b0000000000001111)*(1.0f/15);
|
|
||||||
|
|
||||||
} break;
|
} break;
|
||||||
case PIXELFORMAT_UNCOMPRESSED_R8G8B8A8:
|
case PIXELFORMAT_UNCOMPRESSED_R8G8B8A8:
|
||||||
{
|
{
|
||||||
imageValue = (float)((unsigned char *)image.data)[k + selectedChannel]/255.0f;
|
imageValue = (float)((unsigned char *)image.data)[k + selectedChannel]/255.0f;
|
||||||
imageAlpha = (float)((unsigned char *)image.data)[k + 3]/255.0f;
|
|
||||||
|
|
||||||
k += 4;
|
k += 4;
|
||||||
} break;
|
} break;
|
||||||
case PIXELFORMAT_UNCOMPRESSED_R8G8B8:
|
case PIXELFORMAT_UNCOMPRESSED_R8G8B8:
|
||||||
{
|
{
|
||||||
imageValue = (float)((unsigned char *)image.data)[k + selectedChannel]/255.0f;
|
imageValue = (float)((unsigned char *)image.data)[k + selectedChannel]/255.0f;
|
||||||
imageAlpha = 1;
|
|
||||||
|
|
||||||
k += 3;
|
k += 3;
|
||||||
} break;
|
} break;
|
||||||
case PIXELFORMAT_UNCOMPRESSED_R32:
|
case PIXELFORMAT_UNCOMPRESSED_R32:
|
||||||
{
|
{
|
||||||
imageValue = ((float *)image.data)[k];
|
imageValue = ((float *)image.data)[k];
|
||||||
imageAlpha = 1;
|
|
||||||
|
|
||||||
k += 1;
|
k += 1;
|
||||||
} break;
|
} break;
|
||||||
case PIXELFORMAT_UNCOMPRESSED_R32G32B32:
|
case PIXELFORMAT_UNCOMPRESSED_R32G32B32:
|
||||||
{
|
{
|
||||||
imageValue = ((float *)image.data)[k + selectedChannel];
|
imageValue = ((float *)image.data)[k + selectedChannel];
|
||||||
imageAlpha = 1;
|
|
||||||
|
|
||||||
k += 3;
|
k += 3;
|
||||||
} break;
|
} break;
|
||||||
case PIXELFORMAT_UNCOMPRESSED_R32G32B32A32:
|
case PIXELFORMAT_UNCOMPRESSED_R32G32B32A32:
|
||||||
{
|
{
|
||||||
imageValue = ((float *)image.data)[k + selectedChannel];
|
imageValue = ((float *)image.data)[k + selectedChannel];
|
||||||
imageAlpha = ((float *)image.data)[k + 3];
|
|
||||||
|
|
||||||
k += 4;
|
k += 4;
|
||||||
} break;
|
} break;
|
||||||
case PIXELFORMAT_UNCOMPRESSED_R16:
|
case PIXELFORMAT_UNCOMPRESSED_R16:
|
||||||
{
|
{
|
||||||
imageValue = HalfToFloat(((unsigned short *)image.data)[k]);
|
imageValue = HalfToFloat(((unsigned short *)image.data)[k]);
|
||||||
imageAlpha = 1;
|
|
||||||
|
|
||||||
k += 1;
|
k += 1;
|
||||||
} break;
|
} break;
|
||||||
case PIXELFORMAT_UNCOMPRESSED_R16G16B16:
|
case PIXELFORMAT_UNCOMPRESSED_R16G16B16:
|
||||||
{
|
{
|
||||||
imageValue = HalfToFloat(((unsigned short *)image.data)[k+selectedChannel]);
|
imageValue = HalfToFloat(((unsigned short *)image.data)[k+selectedChannel]);
|
||||||
imageAlpha = 1;
|
|
||||||
|
|
||||||
k += 3;
|
k += 3;
|
||||||
} break;
|
} break;
|
||||||
case PIXELFORMAT_UNCOMPRESSED_R16G16B16A16:
|
case PIXELFORMAT_UNCOMPRESSED_R16G16B16A16:
|
||||||
{
|
{
|
||||||
imageValue = HalfToFloat(((unsigned short *)image.data)[k + selectedChannel]);
|
imageValue = HalfToFloat(((unsigned short *)image.data)[k + selectedChannel]);
|
||||||
imageAlpha = HalfToFloat(((unsigned short *)image.data)[k + 3]);
|
|
||||||
|
|
||||||
k += 4;
|
k += 4;
|
||||||
} break;
|
} break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// verify threshold
|
pixels[i] = imageValue * 255;
|
||||||
unsigned char resultValue = 0;
|
|
||||||
unsigned char resultAlpha = 0;
|
|
||||||
resultValue = imageValue * 255;
|
|
||||||
if (imageAlpha)
|
|
||||||
{
|
|
||||||
resultAlpha = 255;
|
|
||||||
}
|
|
||||||
|
|
||||||
pixels[i] = resultValue;
|
|
||||||
pixels[i + 1] = resultAlpha;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user