From 415e7e972c920cbf3194c4dfbbfe402d7c4406c5 Mon Sep 17 00:00:00 2001 From: Ray San Date: Mon, 30 Oct 2017 13:51:46 +0100 Subject: [PATCH] Review some issues, view description - Review RPI compilation (core_drop_files not supported) - Review ImageFormat(), some issues - GetTextureData() reviewed for RPI --- examples/Makefile | 5 ++++- src/rlgl.c | 4 ++-- src/textures.c | 37 ++++++++++++++++++------------------- 3 files changed, 24 insertions(+), 22 deletions(-) diff --git a/examples/Makefile b/examples/Makefile index 2942f110..485368c4 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -267,7 +267,6 @@ EXAMPLES = \ core/core_input_gamepad \ core/core_random_values \ core/core_color_select \ - core/core_drop_files \ core/core_storage_values \ core/core_gestures_detection \ core/core_3d_mode \ @@ -326,6 +325,10 @@ EXAMPLES = \ physac/physics_restitution \ physac/physics_shatter \ fix_dylib \ + +ifneq ($(PLATFORM),PLATFORM_RPI) + EXAMPLES += core/core_drop_files +endif CURRENT_MAKEFILE = $(lastword $(MAKEFILE_LIST)) diff --git a/src/rlgl.c b/src/rlgl.c index 35c812a6..5854a494 100644 --- a/src/rlgl.c +++ b/src/rlgl.c @@ -2226,8 +2226,8 @@ void *rlReadTexturePixels(Texture2D texture) glEnable(GL_DEPTH_TEST); //glDisable(GL_BLEND); - glViewport(0, 0, width, height); - rlOrtho(0.0, width, height, 0.0, 0.0, 1.0); + glViewport(0, 0, texture.width, texture.height); + rlOrtho(0.0, texture.width, texture.height, 0.0, 0.0, 1.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glUseProgram(GetShaderDefault().id); 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;