BosonX/src/render.h

41 lines
1.0 KiB
C
Raw Normal View History

#ifndef __RENDERH__
# define __RENDERH__
#include <num/num.h>
#include <num/vec.h>
using namespace libnum;
/* Vertical FOV, in degrees */
#define RENDER_FOV 120.0
/* Radius of the level cylinder, in world units */
#define RENDER_RADIUS num(4.0)
/* Camera depth in the level cylinder, in world units */
#define RENDER_CAMERA_DEPTH (RENDER_RADIUS / 2)
/* Section lengths, in world units */
#define RENDER_SECTION_LENGTH num(4.0)
/* Number of sections visible in advance */
#define RENDER_SECTION_DISTANCE 8
struct prect {
vec3 nl, nr; /* Near left and near right points */
vec3 fl, fr; /* Far left and far right points */
};
/* We assume the camera is looking towards (0,0,z) */
struct camera {
vec3 pos;
};
void render_init(void);
struct prect render_platform_position(int platform_id, num z);
vec3 camera_project(struct camera *camera, vec3 u, vec2 screen_size);
void camera_project_prect(struct camera *camera, struct prect *p,
vec2 screen_size);
void render_triangle(vec3 *p1, vec3 *p2, vec3 *p3, int color);
#endif /* __RENDERH__ */