1
0

Fix GLOAD 16bit color

This commit is contained in:
otya128
2016-12-14 19:39:53 +09:00
parent 1d5ad717bf
commit efdb1f1d7e

View File

@@ -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);
} }