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_ */