Fix GLOAD 16bit color
This commit is contained in:
@@ -615,6 +615,14 @@ class Graphic
|
|||||||
auto b = (argb32 & 0x000000FF);
|
auto b = (argb32 & 0x000000FF);
|
||||||
return (a == 255) | r >> 3 << 11 | g >> 3 << 6 | b >> 3 << 1;
|
return (a == 255) | r >> 3 << 11 | g >> 3 << 6 | b >> 3 << 1;
|
||||||
}
|
}
|
||||||
|
int RGBA16ToARGB32Color(int rgba16)
|
||||||
|
{
|
||||||
|
auto a = (rgba16 & 0b0000000000000001) == 1 ? 0xFF000000 : 0;
|
||||||
|
auto r = (rgba16 & 0b1111100000000000) >> 11;
|
||||||
|
auto g = (rgba16 & 0b0000011111000000) >> 6;
|
||||||
|
auto b = (rgba16 & 0b0000000000111110) >> 1;
|
||||||
|
return a | r << 19 | g << 11 | b << 3;
|
||||||
|
}
|
||||||
void gload(int x, int y, int w, int h, int[] array, int flag, int copymode)
|
void gload(int x, int y, int w, int h, int[] array, int flag, int copymode)
|
||||||
{
|
{
|
||||||
if (w * h > array.length)
|
if (w * h > array.length)
|
||||||
@@ -630,7 +638,7 @@ class Graphic
|
|||||||
//ARRRRRGGGGGBBBBB
|
//ARRRRRGGGGGBBBBB
|
||||||
for (int i = 0; i < array.length; i++)
|
for (int i = 0; i < array.length; i++)
|
||||||
{
|
{
|
||||||
paint.buffer[i] = ARGB32ToRGBA16Color(array[i]);
|
paint.buffer[i] = RGBA16ToARGB32Color(array[i]);
|
||||||
}
|
}
|
||||||
glDrawPixels(w , h , GL_BGRA , GL_UNSIGNED_BYTE , paint.buffer.ptr);
|
glDrawPixels(w , h , GL_BGRA , GL_UNSIGNED_BYTE , paint.buffer.ptr);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user