Changeset 2962 for trunk/src/opengl/mesa/accum.c
- Timestamp:
- Mar 1, 2000, 7:50:02 PM (25 years ago)
- File:
-
- 1 edited
-
trunk/src/opengl/mesa/accum.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/opengl/mesa/accum.c
r2938 r2962 1 /* $Id: accum.c,v 1. 1 2000-02-29 00:49:57 sandervlExp $ */1 /* $Id: accum.c,v 1.2 2000-03-01 18:49:22 jeroen Exp $ */ 2 2 3 3 /* … … 40 40 #endif 41 41 #include "accum.h" 42 #include "types.h" 42 43 #include "context.h" 43 44 #include "macros.h" 44 45 #include "masking.h" 45 46 #include "span.h" 46 #include "types.h"47 47 #endif 48 48 … … 204 204 case GL_ADD: 205 205 { 206 const GLaccum intVal = (GLaccum) (value * acc_scale);207 GLuint j;206 const GLaccum intVal = (GLaccum) (value * acc_scale); 207 GLuint j; 208 208 /* Leave optimized accum buffer mode */ 209 209 if (ctx->IntegerAccumMode) 210 210 rescale_accum(ctx); 211 for (j = 0; j < height; j++) {212 GLaccum * acc = ctx->Buffer->Accum + ypos * width4 + 4 * xpos;211 for (j = 0; j < height; j++) { 212 GLaccum * acc = ctx->Buffer->Accum + ypos * width4 + 4 * xpos; 213 213 GLuint i; 214 for (i = 0; i < width4; i++) {214 for (i = 0; i < width4; i++) { 215 215 acc[i] += intVal; 216 }217 ypos++;218 }219 }220 break;216 } 217 ypos++; 218 } 219 } 220 break; 221 221 222 222 case GL_MULT: 223 {224 GLuint j;223 { 224 GLuint j; 225 225 /* Leave optimized accum buffer mode */ 226 226 if (ctx->IntegerAccumMode) 227 227 rescale_accum(ctx); 228 for (j = 0; j < height; j++) {229 GLaccum *acc = ctx->Buffer->Accum + ypos * width4 + 4 * xpos;228 for (j = 0; j < height; j++) { 229 GLaccum *acc = ctx->Buffer->Accum + ypos * width4 + 4 * xpos; 230 230 GLuint i; 231 for (i = 0; i < width4; i++) {231 for (i = 0; i < width4; i++) { 232 232 acc[i] = (GLaccum) ( (GLfloat) acc[i] * value ); 233 }234 ypos++;235 }236 }237 break;233 } 234 ypos++; 235 } 236 } 237 break; 238 238 239 239 case GL_ACCUM: … … 287 287 } 288 288 (void) (*ctx->Driver.SetBuffer)( ctx, ctx->Color.DriverDrawBuffer ); 289 break;289 break; 290 290 291 291 case GL_LOAD: … … 470 470 /* try to alloc accumulation buffer */ 471 471 ctx->Buffer->Accum = (GLaccum *) 472 MALLOC( buffersize * 4 * sizeof(GLaccum) );472 MALLOC( buffersize * 4 * sizeof(GLaccum) ); 473 473 } 474 474 475 475 if (ctx->Buffer->Accum) { 476 476 if (ctx->Scissor.Enabled) { 477 /* Limit clear to scissor box */478 GLaccum r, g, b, a;479 GLint i, j;477 /* Limit clear to scissor box */ 478 GLaccum r, g, b, a; 479 GLint i, j; 480 480 GLint width, height; 481 481 GLaccum *row; 482 r = (GLaccum) (ctx->Accum.ClearColor[0] * acc_scale);483 g = (GLaccum) (ctx->Accum.ClearColor[1] * acc_scale);484 b = (GLaccum) (ctx->Accum.ClearColor[2] * acc_scale);485 a = (GLaccum) (ctx->Accum.ClearColor[3] * acc_scale);482 r = (GLaccum) (ctx->Accum.ClearColor[0] * acc_scale); 483 g = (GLaccum) (ctx->Accum.ClearColor[1] * acc_scale); 484 b = (GLaccum) (ctx->Accum.ClearColor[2] * acc_scale); 485 a = (GLaccum) (ctx->Accum.ClearColor[3] * acc_scale); 486 486 /* size of region to clear */ 487 487 width = 4 * (ctx->Buffer->Xmax - ctx->Buffer->Xmin + 1); … … 497 497 row[i+2] = b; 498 498 row[i+3] = a; 499 }499 } 500 500 row += 4 * ctx->Buffer->Width; 501 }501 } 502 502 } 503 503 else { 504 /* clear whole buffer */505 if (ctx->Accum.ClearColor[0]==0.0 &&506 ctx->Accum.ClearColor[1]==0.0 &&507 ctx->Accum.ClearColor[2]==0.0 &&508 ctx->Accum.ClearColor[3]==0.0) {509 /* Black */510 MEMSET( ctx->Buffer->Accum, 0, buffersize * 4 * sizeof(GLaccum) );511 }512 else {513 /* Not black */514 GLaccum *acc, r, g, b, a;515 GLuint i;516 517 acc = ctx->Buffer->Accum;518 r = (GLaccum) (ctx->Accum.ClearColor[0] * acc_scale);519 g = (GLaccum) (ctx->Accum.ClearColor[1] * acc_scale);520 b = (GLaccum) (ctx->Accum.ClearColor[2] * acc_scale);521 a = (GLaccum) (ctx->Accum.ClearColor[3] * acc_scale);522 for (i=0;i<buffersize;i++) {523 *acc++ = r;524 *acc++ = g;525 *acc++ = b;526 *acc++ = a;527 }528 }504 /* clear whole buffer */ 505 if (ctx->Accum.ClearColor[0]==0.0 && 506 ctx->Accum.ClearColor[1]==0.0 && 507 ctx->Accum.ClearColor[2]==0.0 && 508 ctx->Accum.ClearColor[3]==0.0) { 509 /* Black */ 510 MEMSET( ctx->Buffer->Accum, 0, buffersize * 4 * sizeof(GLaccum) ); 511 } 512 else { 513 /* Not black */ 514 GLaccum *acc, r, g, b, a; 515 GLuint i; 516 517 acc = ctx->Buffer->Accum; 518 r = (GLaccum) (ctx->Accum.ClearColor[0] * acc_scale); 519 g = (GLaccum) (ctx->Accum.ClearColor[1] * acc_scale); 520 b = (GLaccum) (ctx->Accum.ClearColor[2] * acc_scale); 521 a = (GLaccum) (ctx->Accum.ClearColor[3] * acc_scale); 522 for (i=0;i<buffersize;i++) { 523 *acc++ = r; 524 *acc++ = g; 525 *acc++ = b; 526 *acc++ = a; 527 } 528 } 529 529 } 530 530
Note:
See TracChangeset
for help on using the changeset viewer.
