rayzor
annotate src/min3d.h @ 0:2a5340a6eee4
rayzor first commit
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sat, 05 Apr 2014 08:46:27 +0300 |
parents | |
children | a826bf0fb169 |
rev | line source |
---|---|
nuclear@0 | 1 #ifndef MIN3D_H_ |
nuclear@0 | 2 #define MIN3D_H_ |
nuclear@0 | 3 |
nuclear@0 | 4 #include "inttypes.h" |
nuclear@0 | 5 |
nuclear@0 | 6 /* state toggles */ |
nuclear@0 | 7 enum { |
nuclear@0 | 8 M3D_DEPTH_TEST, |
nuclear@0 | 9 M3D_CULL_FACE, |
nuclear@0 | 10 M3D_LIGHTING, |
nuclear@0 | 11 M3D_LIGHT0, |
nuclear@0 | 12 M3D_LIGHT1, |
nuclear@0 | 13 M3D_LIGHT2, |
nuclear@0 | 14 M3D_LIGHT3 |
nuclear@0 | 15 }; |
nuclear@0 | 16 |
nuclear@0 | 17 /* buffer bits */ |
nuclear@0 | 18 enum { |
nuclear@0 | 19 M3D_COLOR_BUFFER_BIT = 1, |
nuclear@0 | 20 M3D_DEPTH_BUFFER_BIT = 2 |
nuclear@0 | 21 }; |
nuclear@0 | 22 |
nuclear@0 | 23 /* primitives */ |
nuclear@0 | 24 enum { |
nuclear@0 | 25 M3D_POINTS = 1, |
nuclear@0 | 26 M3D_LINES = 2, |
nuclear@0 | 27 M3D_TRIANGLES = 3, |
nuclear@0 | 28 M3D_QUADS = 4 |
nuclear@0 | 29 }; |
nuclear@0 | 30 |
nuclear@0 | 31 /* matrix mode */ |
nuclear@0 | 32 enum { |
nuclear@0 | 33 M3D_MODELVIEW, |
nuclear@0 | 34 M3D_PROJECTION |
nuclear@0 | 35 }; |
nuclear@0 | 36 |
nuclear@0 | 37 struct m3d_image { |
nuclear@0 | 38 int xsz, ysz; |
nuclear@0 | 39 unsigned char *pixels; |
nuclear@0 | 40 }; |
nuclear@0 | 41 |
nuclear@0 | 42 #ifdef __cplusplus |
nuclear@0 | 43 extern "C" { |
nuclear@0 | 44 #endif |
nuclear@0 | 45 |
nuclear@0 | 46 void m3d_set_buffers(struct m3d_image *cbuf, uint16_t *zbuf); |
nuclear@0 | 47 void m3d_clear(unsigned int bmask); |
nuclear@0 | 48 |
nuclear@0 | 49 void m3d_enable(int bit); |
nuclear@0 | 50 void m3d_disable(int bit); |
nuclear@0 | 51 |
nuclear@0 | 52 /* matrix stack */ |
nuclear@0 | 53 void m3d_matrix_mode(int mode); |
nuclear@0 | 54 void m3d_load_identity(void); |
nuclear@0 | 55 void m3d_load_matrix(const float *m); |
nuclear@0 | 56 void m3d_mult_matrix(const float *m); |
nuclear@0 | 57 void m3d_translate(float x, float y, float z); |
nuclear@0 | 58 void m3d_rotate(float angle, float x, float y, float z); |
nuclear@0 | 59 void m3d_scale(float x, float y, float z); |
nuclear@0 | 60 void m3d_frustum(float left, float right, float bottom, float top, float nr, float fr); |
nuclear@0 | 61 void m3d_perspective(float vfov, float aspect, float znear, float zfar); |
nuclear@0 | 62 |
nuclear@0 | 63 /* drawing */ |
nuclear@0 | 64 void m3d_draw(int prim, const float *varr, int vcount); |
nuclear@0 | 65 void m3d_draw_indexed(int prim, const float *varr, const int *idxarr, int icount); |
nuclear@0 | 66 |
nuclear@0 | 67 /* TODO immediate mode */ |
nuclear@0 | 68 |
nuclear@0 | 69 #ifdef __cplusplus |
nuclear@0 | 70 } |
nuclear@0 | 71 #endif |
nuclear@0 | 72 |
nuclear@0 | 73 #endif /* MIN3D_H_ */ |