diff options
Diffstat (limited to 'src/glu')
-rw-r--r-- | src/glu/sgi/libutil/mipmap.c | 98 |
1 files changed, 48 insertions, 50 deletions
diff --git a/src/glu/sgi/libutil/mipmap.c b/src/glu/sgi/libutil/mipmap.c index b81b9bc39d..ea17438dd6 100644 --- a/src/glu/sgi/libutil/mipmap.c +++ b/src/glu/sgi/libutil/mipmap.c @@ -1169,15 +1169,15 @@ static void halveImage_float(GLint components, GLuint width, GLuint height, for (i = 0; i < newheight; i++) { for (j = 0; j < newwidth; j++) { for (k = 0; k < components; k++) { - GLuint b; - b = __GLU_SWAP_4_BYTES(t); - s[0] = *(GLfloat*)&b; - b = __GLU_SWAP_4_BYTES(t+group_size); - s[0] += *(GLfloat*)&b; - b = __GLU_SWAP_4_BYTES(t+ysize); - s[0] += *(GLfloat*)&b; - b = __GLU_SWAP_4_BYTES(t+ysize+group_size); - s[0] += *(GLfloat*)&b; + union { GLuint b; GLfloat f; } swapbuf; + swapbuf.b = __GLU_SWAP_4_BYTES(t); + s[0] = swapbuf.f; + swapbuf.b = __GLU_SWAP_4_BYTES(t+group_size); + s[0] += swapbuf.f; + swapbuf.b = __GLU_SWAP_4_BYTES(t+ysize); + s[0] += swapbuf.f; + swapbuf.b = __GLU_SWAP_4_BYTES(t+ysize+group_size); + s[0] += swapbuf.f; s[0] /= 4; s++; t += element_size; } @@ -2980,7 +2980,7 @@ static void scale_internal_float(GLint components, GLint widthin, int l, m; const char *left, *right; - GLuint swapbuf; /* unsigned buffer */ + union { GLuint b; GLfloat f; } swapbuf; if (widthin == widthout*2 && heightin == heightout*2) { halveImage_float(components, widthin, heightin, @@ -3029,8 +3029,8 @@ static void scale_internal_float(GLint components, GLint widthin, for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) { if (myswap_bytes) { - swapbuf = __GLU_SWAP_4_BYTES(temp_index); - totals[k] += *(const GLfloat*)&swapbuf * percent; + swapbuf.b = __GLU_SWAP_4_BYTES(temp_index); + totals[k] += swapbuf.f * percent; } else { totals[k] += *(const GLfloat*)temp_index * percent; } @@ -3041,8 +3041,8 @@ static void scale_internal_float(GLint components, GLint widthin, for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) { if (myswap_bytes) { - swapbuf = __GLU_SWAP_4_BYTES(temp_index); - totals[k] += *(const GLfloat*)&swapbuf * y_percent; + swapbuf.b = __GLU_SWAP_4_BYTES(temp_index); + totals[k] += swapbuf.f * y_percent; } else { totals[k] += *(const GLfloat*)temp_index * y_percent; } @@ -3054,8 +3054,8 @@ static void scale_internal_float(GLint components, GLint widthin, for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) { if (myswap_bytes) { - swapbuf = __GLU_SWAP_4_BYTES(temp_index); - totals[k] += *(const GLfloat*)&swapbuf * percent; + swapbuf.b = __GLU_SWAP_4_BYTES(temp_index); + totals[k] += swapbuf.f * percent; } else { totals[k] += *(const GLfloat*)temp_index * percent; } @@ -3068,8 +3068,8 @@ static void scale_internal_float(GLint components, GLint widthin, for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) { if (myswap_bytes) { - swapbuf = __GLU_SWAP_4_BYTES(temp_index); - totals[k] += *(const GLfloat*)&swapbuf * percent; + swapbuf.b = __GLU_SWAP_4_BYTES(temp_index); + totals[k] += swapbuf.f * percent; } else { totals[k] += *(const GLfloat*)temp_index * percent; } @@ -3079,8 +3079,8 @@ static void scale_internal_float(GLint components, GLint widthin, for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) { if (myswap_bytes) { - swapbuf = __GLU_SWAP_4_BYTES(temp_index); - totals[k] += *(const GLfloat*)&swapbuf * y_percent; + swapbuf.b = __GLU_SWAP_4_BYTES(temp_index); + totals[k] += swapbuf.f * y_percent; } else { totals[k] += *(const GLfloat*)temp_index * y_percent; } @@ -3091,8 +3091,8 @@ static void scale_internal_float(GLint components, GLint widthin, for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) { if (myswap_bytes) { - swapbuf = __GLU_SWAP_4_BYTES(temp_index); - totals[k] += *(const GLfloat*)&swapbuf * percent; + swapbuf.b = __GLU_SWAP_4_BYTES(temp_index); + totals[k] += swapbuf.f * percent; } else { totals[k] += *(const GLfloat*)temp_index * percent; } @@ -3105,10 +3105,10 @@ static void scale_internal_float(GLint components, GLint widthin, for (k = 0; k < components; k++, left += element_size, right += element_size) { if (myswap_bytes) { - swapbuf = __GLU_SWAP_4_BYTES(left); - totals[k] += *(const GLfloat*)&swapbuf * (1-lowx_float); - swapbuf = __GLU_SWAP_4_BYTES(right); - totals[k] += *(const GLfloat*)&swapbuf * highx_float; + swapbuf.b = __GLU_SWAP_4_BYTES(left); + totals[k] += swapbuf.f * (1-lowx_float); + swapbuf.b = __GLU_SWAP_4_BYTES(right); + totals[k] += swapbuf.f * highx_float; } else { totals[k] += *(const GLfloat*)left * (1-lowx_float) + *(const GLfloat*)right * highx_float; @@ -3122,8 +3122,8 @@ static void scale_internal_float(GLint components, GLint widthin, for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) { if (myswap_bytes) { - swapbuf = __GLU_SWAP_4_BYTES(temp_index); - totals[k] += *(const GLfloat*)&swapbuf * percent; + swapbuf.b = __GLU_SWAP_4_BYTES(temp_index); + totals[k] += swapbuf.f * percent; } else { totals[k] += *(const GLfloat*)temp_index * percent; } @@ -3133,8 +3133,8 @@ static void scale_internal_float(GLint components, GLint widthin, for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) { if (myswap_bytes) { - swapbuf = __GLU_SWAP_4_BYTES(temp_index); - totals[k] += *(const GLfloat*)&swapbuf * x_percent; + swapbuf.b = __GLU_SWAP_4_BYTES(temp_index); + totals[k] += swapbuf.f * x_percent; } else { totals[k] += *(const GLfloat*)temp_index * x_percent; } @@ -3145,8 +3145,8 @@ static void scale_internal_float(GLint components, GLint widthin, for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) { if (myswap_bytes) { - swapbuf = __GLU_SWAP_4_BYTES(temp_index); - totals[k] += *(const GLfloat*)&swapbuf * percent; + swapbuf.b = __GLU_SWAP_4_BYTES(temp_index); + totals[k] += swapbuf.f * percent; } else { totals[k] += *(const GLfloat*)temp_index * percent; } @@ -3159,8 +3159,8 @@ static void scale_internal_float(GLint components, GLint widthin, for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) { if (myswap_bytes) { - swapbuf = __GLU_SWAP_4_BYTES(temp_index); - totals[k] += *(const GLfloat*)&swapbuf * percent; + swapbuf.b = __GLU_SWAP_4_BYTES(temp_index); + totals[k] += swapbuf.f * percent; } else { totals[k] += *(const GLfloat*)temp_index * percent; } @@ -3170,8 +3170,8 @@ static void scale_internal_float(GLint components, GLint widthin, for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) { if (myswap_bytes) { - swapbuf = __GLU_SWAP_4_BYTES(temp_index); - totals[k] += *(const GLfloat*)&swapbuf * y_percent; + swapbuf.b = __GLU_SWAP_4_BYTES(temp_index); + totals[k] += swapbuf.f * y_percent; } else { totals[k] += *(const GLfloat*)temp_index * y_percent; } @@ -3182,8 +3182,8 @@ static void scale_internal_float(GLint components, GLint widthin, for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) { if (myswap_bytes) { - swapbuf = __GLU_SWAP_4_BYTES(temp_index); - totals[k] += *(const GLfloat*)&swapbuf * percent; + swapbuf.b = __GLU_SWAP_4_BYTES(temp_index); + totals[k] += swapbuf.f * percent; } else { totals[k] += *(const GLfloat*)temp_index * percent; } @@ -3194,8 +3194,8 @@ static void scale_internal_float(GLint components, GLint widthin, for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) { if (myswap_bytes) { - swapbuf = __GLU_SWAP_4_BYTES(temp_index); - totals[k] += *(const GLfloat*)&swapbuf * percent; + swapbuf.b = __GLU_SWAP_4_BYTES(temp_index); + totals[k] += swapbuf.f * percent; } else { totals[k] += *(const GLfloat*)temp_index * percent; } @@ -3211,8 +3211,8 @@ static void scale_internal_float(GLint components, GLint widthin, for (k = 0, temp_index = temp; k < components; k++, temp_index += element_size) { if (myswap_bytes) { - swapbuf = __GLU_SWAP_4_BYTES(temp_index); - totals[k] += *(const GLfloat*)&swapbuf; + swapbuf.b = __GLU_SWAP_4_BYTES(temp_index); + totals[k] += swapbuf.f; } else { totals[k] += *(const GLfloat*)temp_index; } @@ -7397,19 +7397,17 @@ static void closestFit3D(GLenum target, GLint width, GLint height, GLint depth, GLint depthAtLevelOne= (depthPowerOf2 > 1) ? depthPowerOf2 >> 1 : depthPowerOf2; - GLenum proxyTarget; + GLenum proxyTarget = GL_PROXY_TEXTURE_3D; assert(widthAtLevelOne > 0); assert(heightAtLevelOne > 0); assert(depthAtLevelOne > 0); /* does width x height x depth at level 1 & all their mipmaps fit? */ - if (target == GL_TEXTURE_3D || target == GL_PROXY_TEXTURE_3D) { - proxyTarget = GL_PROXY_TEXTURE_3D; - gluTexImage3D(proxyTarget, 1, /* must be non-zero */ - internalFormat, - widthAtLevelOne,heightAtLevelOne,depthAtLevelOne, - 0,format,type,NULL); - } + assert(target == GL_TEXTURE_3D || target == GL_PROXY_TEXTURE_3D); + gluTexImage3D(proxyTarget, 1, /* must be non-zero */ + internalFormat, + widthAtLevelOne,heightAtLevelOne,depthAtLevelOne, + 0,format,type,NULL); glGetTexLevelParameteriv(proxyTarget, 1,GL_TEXTURE_WIDTH,&proxyWidth); /* does it fit??? */ if (proxyWidth == 0) { /* nope, so try again with these sizes */ |