]> icculus.org git repositories - divverent/darkplaces.git/blob - gl_rmisc.c
cleaned up nearly all of the externs in .c files (moved to appropriate .h files)
[divverent/darkplaces.git] / gl_rmisc.c
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 // r_misc.c
21
22 #include "quakedef.h"
23
24
25 /*
26 ===============
27 R_Envmap_f
28
29 Grab six views for environment mapping tests
30 ===============
31 */
32 void R_Envmap_f (void)
33 {
34         byte    buffer[256*256*4];
35
36         if (!r_render.value)
37                 return;
38
39         glDrawBuffer  (GL_FRONT);
40         glReadBuffer  (GL_FRONT);
41         envmap = true;
42
43         r_refdef.vrect.x = 0;
44         r_refdef.vrect.y = 0;
45         r_refdef.vrect.width = 256;
46         r_refdef.vrect.height = 256;
47
48         r_refdef.viewangles[0] = 0;
49         r_refdef.viewangles[1] = 0;
50         r_refdef.viewangles[2] = 0;
51         GL_BeginRendering (&glx, &gly, &glwidth, &glheight);
52         R_RenderView ();
53         glReadPixels (0, 0, 256, 256, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
54         COM_WriteFile ("env0.rgb", buffer, sizeof(buffer));             
55
56         r_refdef.viewangles[1] = 90;
57         GL_BeginRendering (&glx, &gly, &glwidth, &glheight);
58         R_RenderView ();
59         glReadPixels (0, 0, 256, 256, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
60         COM_WriteFile ("env1.rgb", buffer, sizeof(buffer));             
61
62         r_refdef.viewangles[1] = 180;
63         GL_BeginRendering (&glx, &gly, &glwidth, &glheight);
64         R_RenderView ();
65         glReadPixels (0, 0, 256, 256, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
66         COM_WriteFile ("env2.rgb", buffer, sizeof(buffer));             
67
68         r_refdef.viewangles[1] = 270;
69         GL_BeginRendering (&glx, &gly, &glwidth, &glheight);
70         R_RenderView ();
71         glReadPixels (0, 0, 256, 256, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
72         COM_WriteFile ("env3.rgb", buffer, sizeof(buffer));             
73
74         r_refdef.viewangles[0] = -90;
75         r_refdef.viewangles[1] = 0;
76         GL_BeginRendering (&glx, &gly, &glwidth, &glheight);
77         R_RenderView ();
78         glReadPixels (0, 0, 256, 256, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
79         COM_WriteFile ("env4.rgb", buffer, sizeof(buffer));             
80
81         r_refdef.viewangles[0] = 90;
82         r_refdef.viewangles[1] = 0;
83         GL_BeginRendering (&glx, &gly, &glwidth, &glheight);
84         R_RenderView ();
85         glReadPixels (0, 0, 256, 256, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
86         COM_WriteFile ("env5.rgb", buffer, sizeof(buffer));             
87
88         envmap = false;
89         glDrawBuffer  (GL_BACK);
90         glReadBuffer  (GL_BACK);
91         GL_EndRendering ();
92 }
93
94 void R_InitParticles (void);
95
96 void gl_misc_start(void)
97 {
98 }
99
100 void gl_misc_shutdown(void)
101 {
102 }
103
104 void gl_misc_newmap(void)
105 {
106 }
107
108 /*
109 ===============
110 R_Init
111 ===============
112 */
113 void GL_Misc_Init (void)
114 {       
115         Cmd_AddCommand ("envmap", R_Envmap_f);  
116         Cmd_AddCommand ("timerefresh", R_TimeRefresh_f);        
117
118         R_RegisterModule("GL_Misc", gl_misc_start, gl_misc_shutdown, gl_misc_newmap);
119 }
120
121 extern void R_ClearParticles (void);
122 extern void GL_BuildLightmaps (void);
123
124 /*
125 ===============
126 R_NewMap
127 ===============
128 */
129 void R_NewMap (void)
130 {
131         int             i;
132         
133         for (i=0 ; i<256 ; i++)
134                 d_lightstylevalue[i] = 264;             // normal light value
135
136         memset (&r_worldentity, 0, sizeof(r_worldentity));
137         r_worldentity.render.model = cl.worldmodel;
138         currententity = &r_worldentity;
139
140         r_viewleaf = NULL;
141         R_Modules_NewMap();
142
143         GL_BuildLightmaps ();
144
145         // identify sky texture
146         skytexturenum = -1;
147         for (i=0 ; i<cl.worldmodel->numtextures ; i++)
148         {
149                 if (!cl.worldmodel->textures[i])
150                         continue;
151                 if (!strncmp(cl.worldmodel->textures[i]->name,"sky",3) )
152                         skytexturenum = i;
153         }
154         SHOWLMP_clear();
155 }
156
157
158 /*
159 ====================
160 R_TimeRefresh_f
161
162 For program optimization
163 ====================
164 */
165 qboolean intimerefresh = 0;
166 void R_TimeRefresh_f (void)
167 {
168         int                     i;
169         float           start, stop, time;
170
171         intimerefresh = 1;
172         start = Sys_DoubleTime ();
173         for (i = 0;i < 128;i++)
174         {
175                 r_refdef.viewangles[0] = 0;
176                 r_refdef.viewangles[1] = i/128.0*360.0;
177                 r_refdef.viewangles[2] = 0;
178                 SCR_UpdateScreen();
179         }
180
181         stop = Sys_DoubleTime ();
182         intimerefresh = 0;
183         time = stop-start;
184         Con_Printf ("%f seconds (%f fps)\n", time, 128/time);
185 }
186
187