mirror of https://github.com/axmolengine/axmol.git
Texture2D: RGB888 -> A8 conversion (white - full opacity, black - full transparency)
This commit is contained in:
parent
8ad49c1bbc
commit
112fceae81
|
@ -322,6 +322,15 @@ void Texture2D::convertRGBA8888ToRGB565(const unsigned char* data, ssize_t dataL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RRRRRRRRGGGGGGGGBBBBBBBB -> AAAAAAAA
|
||||||
|
void Texture2D::convertRGB888ToA8(const unsigned char* data, ssize_t dataLen, unsigned char* outData)
|
||||||
|
{
|
||||||
|
for (ssize_t i = 0, l = dataLen - 2; i < l; i += 3)
|
||||||
|
{
|
||||||
|
*outData++ = (data[i] * 299 + data[i + 1] * 587 + data[i + 2] * 114 + 500) / 1000; //A = (R*299 + G*587 + B*114 + 500) / 1000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// RRRRRRRRGGGGGGGGBBBBBBBB -> IIIIIIII
|
// RRRRRRRRGGGGGGGGBBBBBBBB -> IIIIIIII
|
||||||
void Texture2D::convertRGB888ToI8(const unsigned char* data, ssize_t dataLen, unsigned char* outData)
|
void Texture2D::convertRGB888ToI8(const unsigned char* data, ssize_t dataLen, unsigned char* outData)
|
||||||
{
|
{
|
||||||
|
@ -917,6 +926,11 @@ Texture2D::PixelFormat Texture2D::convertRGB888ToFormat(const unsigned char* dat
|
||||||
*outData = (unsigned char*)malloc(sizeof(unsigned char) * (*outDataLen));
|
*outData = (unsigned char*)malloc(sizeof(unsigned char) * (*outDataLen));
|
||||||
convertRGB888ToRGB565(data, dataLen, *outData);
|
convertRGB888ToRGB565(data, dataLen, *outData);
|
||||||
break;
|
break;
|
||||||
|
case PixelFormat::A8:
|
||||||
|
*outDataLen = dataLen/3;
|
||||||
|
*outData = (unsigned char*)malloc(sizeof(unsigned char) * (*outDataLen));
|
||||||
|
convertRGB888ToA8(data, dataLen, *outData);
|
||||||
|
break;
|
||||||
case PixelFormat::I8:
|
case PixelFormat::I8:
|
||||||
*outDataLen = dataLen/3;
|
*outDataLen = dataLen/3;
|
||||||
*outData = (unsigned char*)malloc(sizeof(unsigned char) * (*outDataLen));
|
*outData = (unsigned char*)malloc(sizeof(unsigned char) * (*outDataLen));
|
||||||
|
|
|
@ -489,6 +489,7 @@ private:
|
||||||
//RGB888 to XXX
|
//RGB888 to XXX
|
||||||
static void convertRGB888ToRGBA8888(const unsigned char* data, ssize_t dataLen, unsigned char* outData);
|
static void convertRGB888ToRGBA8888(const unsigned char* data, ssize_t dataLen, unsigned char* outData);
|
||||||
static void convertRGB888ToRGB565(const unsigned char* data, ssize_t dataLen, unsigned char* outData);
|
static void convertRGB888ToRGB565(const unsigned char* data, ssize_t dataLen, unsigned char* outData);
|
||||||
|
static void convertRGB888ToA8(const unsigned char* data, ssize_t dataLen, unsigned char* outData);
|
||||||
static void convertRGB888ToI8(const unsigned char* data, ssize_t dataLen, unsigned char* outData);
|
static void convertRGB888ToI8(const unsigned char* data, ssize_t dataLen, unsigned char* outData);
|
||||||
static void convertRGB888ToAI88(const unsigned char* data, ssize_t dataLen, unsigned char* outData);
|
static void convertRGB888ToAI88(const unsigned char* data, ssize_t dataLen, unsigned char* outData);
|
||||||
static void convertRGB888ToRGBA4444(const unsigned char* data, ssize_t dataLen, unsigned char* outData);
|
static void convertRGB888ToRGBA4444(const unsigned char* data, ssize_t dataLen, unsigned char* outData);
|
||||||
|
|
Loading…
Reference in New Issue