|
|
1.1 ! root 1: /* ! 2: Copyright (C) 1996-1997 Id Software, Inc. ! 3: ! 4: This program is free software; you can redistribute it and/or ! 5: modify it under the terms of the GNU General Public License ! 6: as published by the Free Software Foundation; either version 2 ! 7: of the License, or (at your option) any later version. ! 8: ! 9: This program is distributed in the hope that it will be useful, ! 10: but WITHOUT ANY WARRANTY; without even the implied warranty of ! 11: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ! 12: ! 13: See the GNU General Public License for more details. ! 14: ! 15: You should have received a copy of the GNU General Public License ! 16: along with this program; if not, write to the Free Software ! 17: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ! 18: ! 19: */ ! 20: // d_init.c: rasterization driver initialization ! 21: ! 22: #include "quakedef.h" ! 23: #include "d_local.h" ! 24: ! 25: #define NUM_MIPS 4 ! 26: ! 27: cvar_t d_subdiv16 = {"d_subdiv16", "1"}; ! 28: cvar_t d_mipcap = {"d_mipcap", "0"}; ! 29: cvar_t d_mipscale = {"d_mipscale", "1"}; ! 30: ! 31: surfcache_t *d_initial_rover; ! 32: qboolean d_roverwrapped; ! 33: int d_minmip; ! 34: float d_scalemip[NUM_MIPS-1]; ! 35: ! 36: static float basemip[NUM_MIPS-1] = {1.0, 0.5*0.8, 0.25*0.8}; ! 37: ! 38: extern int d_aflatcolor; ! 39: ! 40: void (*d_drawspans) (espan_t *pspan); ! 41: ! 42: ! 43: /* ! 44: =============== ! 45: D_Init ! 46: =============== ! 47: */ ! 48: void D_Init (void) ! 49: { ! 50: ! 51: r_skydirect = 1; ! 52: ! 53: Cvar_RegisterVariable (&d_subdiv16); ! 54: Cvar_RegisterVariable (&d_mipcap); ! 55: Cvar_RegisterVariable (&d_mipscale); ! 56: ! 57: r_drawpolys = false; ! 58: r_worldpolysbacktofront = false; ! 59: r_recursiveaffinetriangles = true; ! 60: r_pixbytes = 1; ! 61: r_aliasuvscale = 1.0; ! 62: } ! 63: ! 64: ! 65: /* ! 66: =============== ! 67: D_CopyRects ! 68: =============== ! 69: */ ! 70: void D_CopyRects (vrect_t *prects, int transparent) ! 71: { ! 72: ! 73: // this function is only required if the CPU doesn't have direct access to the ! 74: // back buffer, and there's some driver interface function that the driver ! 75: // doesn't support and requires Quake to do in software (such as drawing the ! 76: // console); Quake will then draw into wherever the driver points vid.buffer ! 77: // and will call this function before swapping buffers ! 78: ! 79: UNUSED(prects); ! 80: UNUSED(transparent); ! 81: } ! 82: ! 83: ! 84: /* ! 85: =============== ! 86: D_EnableBackBufferAccess ! 87: =============== ! 88: */ ! 89: void D_EnableBackBufferAccess (void) ! 90: { ! 91: ! 92: VID_LockBuffer (); ! 93: } ! 94: ! 95: ! 96: /* ! 97: =============== ! 98: D_TurnZOn ! 99: =============== ! 100: */ ! 101: void D_TurnZOn (void) ! 102: { ! 103: // not needed for software version ! 104: } ! 105: ! 106: ! 107: /* ! 108: =============== ! 109: D_DisableBackBufferAccess ! 110: =============== ! 111: */ ! 112: void D_DisableBackBufferAccess (void) ! 113: { ! 114: VID_UnlockBuffer (); ! 115: } ! 116: ! 117: ! 118: /* ! 119: =============== ! 120: D_SetupFrame ! 121: =============== ! 122: */ ! 123: void D_SetupFrame (void) ! 124: { ! 125: int i; ! 126: ! 127: if (r_dowarp) ! 128: d_viewbuffer = r_warpbuffer; ! 129: else ! 130: d_viewbuffer = (void *)(byte *)vid.buffer; ! 131: ! 132: if (r_dowarp) ! 133: screenwidth = WARP_WIDTH; ! 134: else ! 135: screenwidth = vid.rowbytes; ! 136: ! 137: d_roverwrapped = false; ! 138: d_initial_rover = sc_rover; ! 139: ! 140: d_minmip = d_mipcap.value; ! 141: if (d_minmip > 3) ! 142: d_minmip = 3; ! 143: else if (d_minmip < 0) ! 144: d_minmip = 0; ! 145: ! 146: for (i=0 ; i<(NUM_MIPS-1) ; i++) ! 147: d_scalemip[i] = basemip[i] * d_mipscale.value; ! 148: ! 149: #if id386 ! 150: if (d_subdiv16.value) ! 151: d_drawspans = D_DrawSpans16; ! 152: else ! 153: d_drawspans = D_DrawSpans8; ! 154: #else ! 155: d_drawspans = D_DrawSpans8; ! 156: #endif ! 157: ! 158: d_aflatcolor = 0; ! 159: } ! 160: ! 161: ! 162: /* ! 163: =============== ! 164: D_UpdateRects ! 165: =============== ! 166: */ ! 167: void D_UpdateRects (vrect_t *prect) ! 168: { ! 169: ! 170: // the software driver draws these directly to the vid buffer ! 171: ! 172: UNUSED(prect); ! 173: } ! 174:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.