…aaand add PREFIX to the freebsd makefile too
[voxelands-alt.git] / src / graphics / render.c
blob7960b86563b3680509f63e9af666d3f8b869f890
1 /************************************************************************
2 * object.c
3 * voxelands - 3d voxel world sandbox game
4 * Copyright (C) Lisa 'darkrose' Milne 2016 <lisa@ltmnet.com>
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14 * See the GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>
18 ************************************************************************/
20 #include "common.h"
21 #include "graphics.h"
23 static struct {
24 int ticks;
25 int tticks;
26 int tpf;
27 int fticks;
28 int font_init;
29 float dtime;
30 } render_data = {
36 0.1
39 /* get client-side frame time */
40 float client_dtime()
42 return render_data.dtime;
45 /* clear the frame */
46 void render_pre()
48 if (!render_data.ticks)
49 render_data.ticks = time_ticks();
50 render_data.tpf = 1000/wm_data.frame_cap;
51 events_main();
54 /* render to frame */
55 void render_post()
57 /* TODO: uncomment this
58 ui_render();*/
60 /* TODO: uncomment this
61 if (wm_data.cursor.mat)
62 render2d_quad_mat(wm_data.cursor.mat,mouse[CUR_X]+wm_data.cursor.x,mouse[CUR_Y]+wm_data.cursor.y,wm_data.cursor.w,wm_data.cursor.h);*/
64 /* should get this from sky when in-game */
65 glClearColor(0, 0, 0, 1.0);
66 /* smooth blending so the hud layer doesn't hide the game layer */
67 glEnable(GL_BLEND);
68 glEnable(GL_LINE_SMOOTH);
69 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
70 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
72 render3d();
74 render2d();
76 wm_update();
78 /* calculate a scale factor for smooth animations */
79 render_data.tticks = interval_delay(render_data.ticks,wm_data.frame_cap);
80 wm_data.fps = calc_fps(render_data.ticks,render_data.tticks);
81 render_data.dtime = time_dtime(render_data.ticks);
82 render_data.ticks = render_data.tticks;