home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 113 / EnigmaAmiga113CD.iso / software / sviluppo / quakeworld_src / client / d_init.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-06-17  |  3.3 KB  |  175 lines

  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 = vid.maxwarpwidth; /*phx - avoid constant 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.  
  175.