void ZB_clear(ZBuffer * zb, int clear_z, int z, int clear_color, int r, int g, int b) { #if TGL_FEATURE_RENDER_BITS != 24 int color; #endif int y; PIXEL *pp; if (clear_z) { memset_s(zb->zbuf, z, zb->xsize * zb->ysize); } if (clear_color) { pp = zb->pbuf; for (y = 0; y < zb->ysize; y++) { #if TGL_FEATURE_RENDER_BITS == 15 || TGL_FEATURE_RENDER_BITS == 16 color = RGB_TO_PIXEL(r, g, b); memset_s(pp, color, zb->xsize); #elif TGL_FEATURE_RENDER_BITS == 32 color = RGB_TO_PIXEL(r, g, b); memset_l(pp, color, zb->xsize); #elif TGL_FEATURE_RENDER_BITS == 24 memset_RGB24(pp,r>>8,g>>8,b>>8,zb->xsize); #else #error TODO #endif pp = (PIXEL *) ((char *) pp + zb->linesize); } } }
void ZB_line(ZBuffer *zb, ZBufferPoint *p1, ZBufferPoint *p2) { int color1, color2; color1 = RGB_TO_PIXEL(p1->r, p1->g, p1->b); color2 = RGB_TO_PIXEL(p2->r, p2->g, p2->b); // choose if the line should have its color interpolated or not if (color1 == color2) { ZB_line_flat(zb, p1, p2, color1); } else { ZB_line_interp(zb, p1, p2); } }
void ZB_clear(ZBuffer *zb, int clear_z, int z, int clear_color, int r, int g, int b) { int color; int y; PIXEL *pp; if (clear_z) { memset_s(zb->zbuf, z, zb->xsize * zb->ysize); } if (clear_z) { memset_l(zb->zbuf2, z, zb->xsize * zb->ysize); } if (clear_color) { pp = zb->pbuf; for (y = 0; y < zb->ysize; y++) { color = RGB_TO_PIXEL(r, g, b); memset_s(pp, color, zb->xsize); pp = (PIXEL *)((char *)pp + zb->linesize); } } }