|
|
1.1 ! root 1: // d_init.c: rasterization driver initialization ! 2: ! 3: #include "quakedef.h" ! 4: #include "d_local.h" ! 5: ! 6: #define NUM_MIPS 4 ! 7: ! 8: cvar_t d_subdiv16 = {"d_subdiv16", "1"}; ! 9: cvar_t d_mipcap = {"d_mipcap", "0"}; ! 10: cvar_t d_mipscale = {"d_mipscale", "1"}; ! 11: ! 12: surfcache_t *d_initial_rover; ! 13: qboolean d_roverwrapped; ! 14: int d_minmip; ! 15: float d_scalemip[NUM_MIPS-1]; ! 16: ! 17: static float basemip[NUM_MIPS-1] = {1.0, 0.5*0.8, 0.25*0.8}; ! 18: ! 19: extern int d_aflatcolor; ! 20: ! 21: void (*d_drawspans) (espan_t *pspan); ! 22: ! 23: ! 24: /* ! 25: =============== ! 26: D_Init ! 27: =============== ! 28: */ ! 29: void D_Init (void) ! 30: { ! 31: ! 32: r_skydirect = 1; ! 33: ! 34: Cvar_RegisterVariable (&d_subdiv16); ! 35: Cvar_RegisterVariable (&d_mipcap); ! 36: Cvar_RegisterVariable (&d_mipscale); ! 37: ! 38: r_drawpolys = false; ! 39: r_worldpolysbacktofront = false; ! 40: r_recursiveaffinetriangles = true; ! 41: r_pixbytes = 1; ! 42: r_aliasuvscale = 1.0; ! 43: } ! 44: ! 45: ! 46: /* ! 47: =============== ! 48: D_CopyRects ! 49: =============== ! 50: */ ! 51: void D_CopyRects (vrect_t *prects, int transparent) ! 52: { ! 53: ! 54: // this function is only required if the CPU doesn't have direct access to the ! 55: // back buffer, and there's some driver interface function that the driver ! 56: // doesn't support and requires Quake to do in software (such as drawing the ! 57: // console); Quake will then draw into wherever the driver points vid.buffer ! 58: // and will call this function before swapping buffers ! 59: ! 60: UNUSED(prects); ! 61: UNUSED(transparent); ! 62: } ! 63: ! 64: ! 65: /* ! 66: =============== ! 67: D_EnableBackBufferAccess ! 68: =============== ! 69: */ ! 70: void D_EnableBackBufferAccess (void) ! 71: { ! 72: VID_LockBuffer (); ! 73: } ! 74: ! 75: ! 76: /* ! 77: =============== ! 78: D_TurnZOn ! 79: =============== ! 80: */ ! 81: void D_TurnZOn (void) ! 82: { ! 83: // not needed for software version ! 84: } ! 85: ! 86: ! 87: /* ! 88: =============== ! 89: D_DisableBackBufferAccess ! 90: =============== ! 91: */ ! 92: void D_DisableBackBufferAccess (void) ! 93: { ! 94: VID_UnlockBuffer (); ! 95: } ! 96: ! 97: ! 98: /* ! 99: =============== ! 100: D_SetupFrame ! 101: =============== ! 102: */ ! 103: void D_SetupFrame (void) ! 104: { ! 105: int i; ! 106: ! 107: if (r_dowarp) ! 108: d_viewbuffer = r_warpbuffer; ! 109: else ! 110: d_viewbuffer = (void *)(byte *)vid.buffer; ! 111: ! 112: if (r_dowarp) ! 113: screenwidth = WARP_WIDTH; ! 114: else ! 115: screenwidth = vid.rowbytes; ! 116: ! 117: d_roverwrapped = false; ! 118: d_initial_rover = sc_rover; ! 119: ! 120: d_minmip = d_mipcap.value; ! 121: if (d_minmip > 3) ! 122: d_minmip = 3; ! 123: else if (d_minmip < 0) ! 124: d_minmip = 0; ! 125: ! 126: for (i=0 ; i<(NUM_MIPS-1) ; i++) ! 127: d_scalemip[i] = basemip[i] * d_mipscale.value; ! 128: ! 129: #if id386 ! 130: if (d_subdiv16.value) ! 131: d_drawspans = D_DrawSpans16; ! 132: else ! 133: d_drawspans = D_DrawSpans8; ! 134: #else ! 135: d_drawspans = D_DrawSpans8; ! 136: #endif ! 137: ! 138: d_aflatcolor = 0; ! 139: } ! 140: ! 141: ! 142: /* ! 143: =============== ! 144: D_UpdateRects ! 145: =============== ! 146: */ ! 147: void D_UpdateRects (vrect_t *prect) ! 148: { ! 149: ! 150: // the software driver draws these directly to the vid buffer ! 151: ! 152: UNUSED(prect); ! 153: } ! 154:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.