From ef5b033b3acf81f95e61ce418be19f5d32481b13 Mon Sep 17 00:00:00 2001 From: Hayden K <819028+mrneo240@users.noreply.github.com> Date: Wed, 27 Mar 2019 19:19:30 -0400 Subject: [PATCH] fix texture twiddle --- GL/texture.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/GL/texture.c b/GL/texture.c index 17f3455..3dddacb 100644 --- a/GL/texture.c +++ b/GL/texture.c @@ -938,14 +938,21 @@ void APIENTRY glTexImage2D(GLenum target, GLint level, GLint internalFormat, if(needsTwiddling) { assert(type == GL_UNSIGNED_BYTE); // Anything else needs this loop adjusting + GLuint x, y, min, mask; min = MIN(w, h); - min2 = min * min; mask = min - 1; - for(y = 0; y < h; y++) { + uint8 * pixels; + uint16 * vtex; + pixels = (uint8 *) data; + vtex = (uint16*)targetData; + + for(y = 0; y < h; y += 2) { for(x = 0; x < w; x++) { - targetData[TWIDOUT(x & mask, y & mask) + (x / min + y / min) * min2] = ((GLubyte*) data)[y * w + x]; + vtex[TWIDOUT((y & mask) / 2, x & mask) + + (x / min + y / min)*min * min / 2] = + pixels[y * w + x] | (pixels[(y + 1) * w + x] << 8); } } } else {