From: lordhavoc Date: Wed, 15 May 2002 02:25:08 +0000 (+0000) Subject: slight optimizations to GL_ConvertColorsFloattoByte X-Git-Tag: RELEASE_0_2_0_RC1~517 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=50749f7e6a4d2cfc27b95774a67045a87c98b5da;p=xonotic%2Fdarkplaces.git slight optimizations to GL_ConvertColorsFloattoByte git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@1833 d7cf8633-e32d-0410-b094-e92efae38249 --- diff --git a/gl_backend.c b/gl_backend.c index 5cdf1153..42cbcf34 100644 --- a/gl_backend.c +++ b/gl_backend.c @@ -581,25 +581,33 @@ void GL_UpdateFarclip(void) void GL_ConvertColorsFloatToByte(void) { - int i, k, *icolor; + int i, k, total, *icolor; float *fcolor; qbyte *bcolor; + total = currentvertex * 4; + // shift float to have 8bit fraction at base of number - for (i = 0, fcolor = &buf_fcolor->c[0];i < currentvertex;i++) + fcolor = &buf_fcolor->c[0]; + for (i = 0;i < total;) { - *fcolor++ += 32768.0f; - *fcolor++ += 32768.0f; - *fcolor++ += 32768.0f; - *fcolor++ += 32768.0f; + fcolor[i ] += 32768.0f; + fcolor[i + 1] += 32768.0f; + fcolor[i + 2] += 32768.0f; + fcolor[i + 3] += 32768.0f; + i += 4; } + // then read as integer and kill float bits... - for (i = 0, icolor = (int *)&buf_fcolor->c[0], bcolor = &buf_bcolor->c[0];i < currentvertex;i++) - { - k = (*icolor++) & 0x7FFFFF;*bcolor++ = k > 255 ? 255 : k; - k = (*icolor++) & 0x7FFFFF;*bcolor++ = k > 255 ? 255 : k; - k = (*icolor++) & 0x7FFFFF;*bcolor++ = k > 255 ? 255 : k; - k = (*icolor++) & 0x7FFFFF;*bcolor++ = k > 255 ? 255 : k; + icolor = (int *)&buf_fcolor->c[0]; + bcolor = &buf_bcolor->c[0]; + for (i = 0;i < total;) + { + k = icolor[i ] & 0x7FFFFF;if (k > 255) k = 255;bcolor[i ] = (qbyte) k; + k = icolor[i + 1] & 0x7FFFFF;if (k > 255) k = 255;bcolor[i + 1] = (qbyte) k; + k = icolor[i + 2] & 0x7FFFFF;if (k > 255) k = 255;bcolor[i + 2] = (qbyte) k; + k = icolor[i + 3] & 0x7FFFFF;if (k > 255) k = 255;bcolor[i + 3] = (qbyte) k; + i += 4; } }