2 * Copyright (C) Volition, Inc. 1999. All rights reserved.
4 * All source code herein is the property of Volition, Inc. You may not sell
5 * or otherwise commercially exploit the source or things you created based on
10 * $Logfile: /Freespace2/code/Graphics/GrZbuffer.cpp $
15 * Code for the software renderer's zbuffer
18 * Revision 1.3 2002/06/09 04:41:18 relnev
19 * added copyright header
21 * Revision 1.2 2002/05/07 03:16:45 theoddone33
22 * The Great Newline Fix
24 * Revision 1.1.1.1 2002/05/03 03:28:09 root
28 * 2 10/07/98 10:53a Dave
31 * 1 10/07/98 10:49a Dave
33 * 1 3/25/98 8:07p John
34 * Split software renderer into Win32 and DirectX
43 #include "grinternal.h"
45 int gr_zcount=GR_Z_COUNT;
48 uint *gr_zbuffer = NULL;
52 int gr_zbuffering = 0;
53 int gr_zbuffering_mode = 0;
54 int gr_global_zbuffering = 0;
56 // If mode is FALSE, turn zbuffer off the entire frame,
57 // no matter what people pass to gr_zbuffer_set.
58 void gr8_zbuffer_clear(int mode)
62 gr_zbuffering_mode = GR_ZBUFF_FULL;
63 gr_global_zbuffering = 1;
65 if ( (!gr_zbuffer) || (gr_screen.max_w!=gr_zbuffer_w) || (gr_screen.max_h!=gr_zbuffer_h) ) {
66 //mprintf(( "Allocating a %d x %d zbuffer\n", gr_screen.max_w, gr_screen.max_h ));
71 gr_zbuffer_w = gr_screen.max_w;
72 gr_zbuffer_h = gr_screen.max_h;
73 gr_zbuffer = (uint *)malloc(gr_zbuffer_w*gr_zbuffer_h*sizeof(uint));
75 Error( LOCATION, "Couldn't allocate zbuffer\n" );
79 memset( gr_zbuffer, 0, gr_zbuffer_w*gr_zbuffer_h*sizeof(uint) );
84 gr_zoffset += GR_Z_RANGE;
85 if ( gr_zcount >= (GR_Z_COUNT-16) ) {
86 //mprintf(( "Bing!\n" ));
87 memset( gr_zbuffer, 0, gr_zbuffer_w*gr_zbuffer_h*sizeof(uint) );
89 gr_zoffset = GR_Z_RANGE*16;
93 gr_zbuffering_mode = GR_ZBUFF_NONE;
94 gr_global_zbuffering = 0;
101 if ( !gr_global_zbuffering ) {
102 return GR_ZBUFF_NONE;
104 return gr_zbuffering_mode;
107 int gr8_zbuffer_set(int mode)
109 if ( !gr_global_zbuffering ) {
111 return GR_ZBUFF_NONE;
114 int tmp = gr_zbuffering_mode;
116 gr_zbuffering_mode = mode;
118 if ( gr_zbuffering_mode == GR_ZBUFF_NONE ) {