src/video/SDL_renderer_gl.c
changeset 2843 e919f2e3700d
parent 2840 53ca0d758b0a
child 2844 70b63882d2ef
equal deleted inserted replaced
2842:97ba0be8b565 2843:e919f2e3700d
   182     GLenum formattype;
   182     GLenum formattype;
   183     Uint8 *palette;
   183     Uint8 *palette;
   184     void *pixels;
   184     void *pixels;
   185     int pitch;
   185     int pitch;
   186     SDL_DirtyRectList dirty;
   186     SDL_DirtyRectList dirty;
       
   187 int HACK_RYAN_FIXME;
   187 } GL_TextureData;
   188 } GL_TextureData;
   188 
   189 
   189 
   190 
   190 static void
   191 static void
   191 GL_SetError(const char *prefix, GLenum result)
   192 GL_SetError(const char *prefix, GLenum result)
   730         data->texh = (GLfloat) texture->h / texture_h;
   731         data->texh = (GLfloat) texture->h / texture_h;
   731     }
   732     }
   732 
   733 
   733     /* YUV formats use RGBA but are really two bytes per pixel */
   734     /* YUV formats use RGBA but are really two bytes per pixel */
   734     if (internalFormat == GL_RGBA && bytes_per_pixel(texture->format) < 4) {
   735     if (internalFormat == GL_RGBA && bytes_per_pixel(texture->format) < 4) {
   735         texture_w = (texture_w * bytes_per_pixel(texture->format)) / 4;
   736 data->HACK_RYAN_FIXME = 2;
   736     }
   737     } else {
       
   738 data->HACK_RYAN_FIXME = 1;
       
   739     }
       
   740     texture_w /= data->HACK_RYAN_FIXME;
   737 
   741 
   738     data->format = format;
   742     data->format = format;
   739     data->formattype = type;
   743     data->formattype = type;
   740     renderdata->glBindTexture(data->type, data->texture);
   744     renderdata->glBindTexture(data->type, data->texture);
   741     renderdata->glTexParameteri(data->type, GL_TEXTURE_MIN_FILTER,
   745     renderdata->glTexParameteri(data->type, GL_TEXTURE_MIN_FILTER,
   861     } else if (texture->format == SDL_PIXELFORMAT_INDEX1MSB) {
   865     } else if (texture->format == SDL_PIXELFORMAT_INDEX1MSB) {
   862         renderdata->glPixelStorei(GL_UNPACK_LSB_FIRST, 0);
   866         renderdata->glPixelStorei(GL_UNPACK_LSB_FIRST, 0);
   863     }
   867     }
   864     renderdata->glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
   868     renderdata->glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
   865     renderdata->glPixelStorei(GL_UNPACK_ROW_LENGTH,
   869     renderdata->glPixelStorei(GL_UNPACK_ROW_LENGTH,
   866                               pitch / bytes_per_pixel(texture->format));
   870                               (pitch / bytes_per_pixel(texture->format) / ((GL_TextureData *)texture->driverdata)->HACK_RYAN_FIXME));
   867 }
   871 }
   868 
   872 
   869 static int
   873 static int
   870 GL_SetTextureColorMod(SDL_Renderer * renderer, SDL_Texture * texture)
   874 GL_SetTextureColorMod(SDL_Renderer * renderer, SDL_Texture * texture)
   871 {
   875 {
  1009             pixels =
  1013             pixels =
  1010                 (void *) ((Uint8 *) texturedata->pixels + rect->y * pitch +
  1014                 (void *) ((Uint8 *) texturedata->pixels + rect->y * pitch +
  1011                           rect->x * bpp);
  1015                           rect->x * bpp);
  1012 printf("texsubimage2d(%d,%d,%d,%d)\n", (int) rect->x, (int) rect->y, (int) rect->w, (int) rect->h);
  1016 printf("texsubimage2d(%d,%d,%d,%d)\n", (int) rect->x, (int) rect->y, (int) rect->w, (int) rect->h);
  1013             data->glTexSubImage2D(texturedata->type, 0, rect->x, rect->y,
  1017             data->glTexSubImage2D(texturedata->type, 0, rect->x, rect->y,
  1014                                   rect->w, rect->h, texturedata->format,
  1018                                   rect->w / texturedata->HACK_RYAN_FIXME, rect->h, texturedata->format,
  1015                                   texturedata->formattype, pixels);
  1019                                   texturedata->formattype, pixels);
  1016         }
  1020         }
  1017         SDL_ClearDirtyRects(&texturedata->dirty);
  1021         SDL_ClearDirtyRects(&texturedata->dirty);
  1018     }
  1022     }
  1019 
  1023