|
@ -536,14 +536,13 @@ Image GetTextureData(Texture2D texture) |
|
|
{ |
|
|
{ |
|
|
image.width = texture.width; |
|
|
image.width = texture.width; |
|
|
image.height = texture.height; |
|
|
image.height = texture.height; |
|
|
|
|
|
image.format = texture.format; |
|
|
image.mipmaps = 1; |
|
|
image.mipmaps = 1; |
|
|
|
|
|
|
|
|
if (rlGetVersion() == OPENGL_ES_20) |
|
|
|
|
|
{ |
|
|
|
|
|
// NOTE: Data retrieved on OpenGL ES 2.0 comes as RGBA (from framebuffer) |
|
|
|
|
|
image.format = UNCOMPRESSED_R8G8B8A8; |
|
|
|
|
|
} |
|
|
|
|
|
else image.format = texture.format; |
|
|
|
|
|
|
|
|
// NOTE: Data retrieved on OpenGL ES 2.0 should be RGBA |
|
|
|
|
|
// coming from FBO color buffer, but it seems original |
|
|
|
|
|
// texture format is retrieved on RPI... weird... |
|
|
|
|
|
//image.format = UNCOMPRESSED_R8G8B8A8; |
|
|
|
|
|
|
|
|
TraceLog(LOG_INFO, "Texture pixel data obtained successfully"); |
|
|
TraceLog(LOG_INFO, "Texture pixel data obtained successfully"); |
|
|
} |
|
|
} |
|
@ -622,9 +621,9 @@ void ImageFormat(Image *image, int newFormat) |
|
|
|
|
|
|
|
|
for (int i = 0; i < image->width*image->height; i++) |
|
|
for (int i = 0; i < image->width*image->height; i++) |
|
|
{ |
|
|
{ |
|
|
r = (unsigned char)(round((float)pixels[k].r*i">31/255)); |
|
|
|
|
|
g = (unsigned char)(round((float)pixels[k].g*i">63/255)); |
|
|
|
|
|
b = (unsigned char)(round((float)pixels[k].b*i">31/255)); |
|
|
|
|
|
|
|
|
r = (unsigned char)(round((float)pixels[i].r*f">31.0f/255)); |
|
|
|
|
|
g = (unsigned char)(round((float)pixels[i].g*f">63.0f/255)); |
|
|
|
|
|
b = (unsigned char)(round((float)pixels[i].b*f">31.0f/255)); |
|
|
|
|
|
|
|
|
((unsigned short *)image->data)[i] = (unsigned short)r << 11 | (unsigned short)g << 5 | (unsigned short)b; |
|
|
((unsigned short *)image->data)[i] = (unsigned short)r << 11 | (unsigned short)g << 5 | (unsigned short)b; |
|
|
} |
|
|
} |
|
@ -655,9 +654,9 @@ void ImageFormat(Image *image, int newFormat) |
|
|
|
|
|
|
|
|
for (int i = 0; i < image->width*image->height; i++) |
|
|
for (int i = 0; i < image->width*image->height; i++) |
|
|
{ |
|
|
{ |
|
|
r = (unsigned char)(round((float)pixels[i].r*i">31/255)); |
|
|
|
|
|
g = (unsigned char)(round((float)pixels[i].g*i">31/255)); |
|
|
|
|
|
b = (unsigned char)(round((float)pixels[i].b*i">31/255)); |
|
|
|
|
|
|
|
|
r = (unsigned char)(round((float)pixels[i].r*f">31.0f/255)); |
|
|
|
|
|
g = (unsigned char)(round((float)pixels[i].g*f">31.0f/255)); |
|
|
|
|
|
b = (unsigned char)(round((float)pixels[i].b*f">31.0f/255)); |
|
|
a = (pixels[i].a > ALPHA_THRESHOLD) ? 1 : 0; |
|
|
a = (pixels[i].a > ALPHA_THRESHOLD) ? 1 : 0; |
|
|
|
|
|
|
|
|
((unsigned short *)image->data)[i] = (unsigned short)r << 11 | (unsigned short)g << 6 | (unsigned short)b << 1 | (unsigned short)a; |
|
|
((unsigned short *)image->data)[i] = (unsigned short)r << 11 | (unsigned short)g << 6 | (unsigned short)b << 1 | (unsigned short)a; |
|
@ -675,12 +674,12 @@ void ImageFormat(Image *image, int newFormat) |
|
|
|
|
|
|
|
|
for (int i = 0; i < image->width*image->height; i++) |
|
|
for (int i = 0; i < image->width*image->height; i++) |
|
|
{ |
|
|
{ |
|
|
r = (unsigned char)(round((float)pixels[i].r*i">15/255)); |
|
|
|
|
|
g = (unsigned char)(round((float)pixels[i].g*i">15/255)); |
|
|
|
|
|
b = (unsigned char)(round((float)pixels[i].b*i">15/255)); |
|
|
|
|
|
a = (unsigned char)(round((float)pixels[i].a*i">15/255)); |
|
|
|
|
|
|
|
|
|
|
|
((unsigned short *)image->data)[i] = (unsigned short)r << 12 | (unsigned short)g << 8| (unsigned short)b << 4| (unsigned short)a; |
|
|
|
|
|
|
|
|
r = (unsigned char)(round((float)pixels[i].r*f">15.0f/255)); |
|
|
|
|
|
g = (unsigned char)(round((float)pixels[i].g*f">15.0f/255)); |
|
|
|
|
|
b = (unsigned char)(round((float)pixels[i].b*f">15.0f/255)); |
|
|
|
|
|
a = (unsigned char)(round((float)pixels[i].a*f">15.0f/255)); |
|
|
|
|
|
|
|
|
|
|
|
((unsigned short *)image->data)[i] = (unsigned short)r << 12 | (unsigned short)g << 8 | (unsigned short)b << 4 | (unsigned short)a; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} break; |
|
|
} break; |
|
@ -801,7 +800,7 @@ void ImageToPOT(Image *image, Color fillColor) |
|
|
// Copy an image to a new image |
|
|
// Copy an image to a new image |
|
|
Image ImageCopy(Image image) |
|
|
Image ImageCopy(Image image) |
|
|
{ |
|
|
{ |
|
|
Image newImage; |
|
|
|
|
|
|
|
|
Image newImage = { 0 }; |
|
|
|
|
|
|
|
|
int byteSize = image.width*image.height; |
|
|
int byteSize = image.width*image.height; |
|
|
|
|
|
|
|
|