summaryrefslogtreecommitdiffhomepage
path: root/src/textures.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/textures.c')
-rw-r--r--src/textures.c37
1 files changed, 18 insertions, 19 deletions
diff --git a/src/textures.c b/src/textures.c
index 814c3028..5e71d029 100644
--- a/src/textures.c
+++ b/src/textures.c
@@ -536,14 +536,13 @@ Image GetTextureData(Texture2D texture)
{
image.width = texture.width;
image.height = texture.height;
+ image.format = texture.format;
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");
}
@@ -622,9 +621,9 @@ void ImageFormat(Image *image, int newFormat)
for (int i = 0; i < image->width*image->height; i++)
{
- r = (unsigned char)(round((float)pixels[k].r*31/255));
- g = (unsigned char)(round((float)pixels[k].g*63/255));
- b = (unsigned char)(round((float)pixels[k].b*31/255));
+ r = (unsigned char)(round((float)pixels[i].r*31.0f/255));
+ g = (unsigned char)(round((float)pixels[i].g*63.0f/255));
+ b = (unsigned char)(round((float)pixels[i].b*31.0f/255));
((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++)
{
- r = (unsigned char)(round((float)pixels[i].r*31/255));
- g = (unsigned char)(round((float)pixels[i].g*31/255));
- b = (unsigned char)(round((float)pixels[i].b*31/255));
+ r = (unsigned char)(round((float)pixels[i].r*31.0f/255));
+ g = (unsigned char)(round((float)pixels[i].g*31.0f/255));
+ b = (unsigned char)(round((float)pixels[i].b*31.0f/255));
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;
@@ -675,12 +674,12 @@ void ImageFormat(Image *image, int newFormat)
for (int i = 0; i < image->width*image->height; i++)
{
- r = (unsigned char)(round((float)pixels[i].r*15/255));
- g = (unsigned char)(round((float)pixels[i].g*15/255));
- b = (unsigned char)(round((float)pixels[i].b*15/255));
- a = (unsigned char)(round((float)pixels[i].a*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*15.0f/255));
+ g = (unsigned char)(round((float)pixels[i].g*15.0f/255));
+ b = (unsigned char)(round((float)pixels[i].b*15.0f/255));
+ a = (unsigned char)(round((float)pixels[i].a*15.0f/255));
+
+ ((unsigned short *)image->data)[i] = (unsigned short)r << 12 | (unsigned short)g << 8 | (unsigned short)b << 4 | (unsigned short)a;
}
} break;
@@ -801,7 +800,7 @@ void ImageToPOT(Image *image, Color fillColor)
// Copy an image to a new image
Image ImageCopy(Image image)
{
- Image newImage;
+ Image newImage = { 0 };
int byteSize = image.width*image.height;