nuclear@1: #ifndef MIN3D_H_ nuclear@1: #define MIN3D_H_ nuclear@1: nuclear@1: #include "inttypes.h" nuclear@1: nuclear@1: /* state toggles */ nuclear@1: enum { nuclear@1: M3D_DEPTH_TEST, nuclear@1: M3D_CULL_FACE, nuclear@1: M3D_LIGHTING, nuclear@1: M3D_LIGHT0, nuclear@1: M3D_LIGHT1, nuclear@1: M3D_LIGHT2, nuclear@1: M3D_LIGHT3 nuclear@1: }; nuclear@1: nuclear@1: /* buffer bits */ nuclear@1: enum { nuclear@1: M3D_COLOR_BUFFER_BIT = 1, nuclear@1: M3D_DEPTH_BUFFER_BIT = 2 nuclear@1: }; nuclear@1: nuclear@1: /* primitives */ nuclear@1: enum { nuclear@1: M3D_POINTS = 1, nuclear@1: M3D_LINES = 2, nuclear@1: M3D_TRIANGLES = 3, nuclear@1: M3D_QUADS = 4 nuclear@1: }; nuclear@1: nuclear@1: /* matrix mode */ nuclear@1: enum { nuclear@1: M3D_MODELVIEW, nuclear@1: M3D_PROJECTION nuclear@1: }; nuclear@1: nuclear@1: struct m3d_image { nuclear@1: int xsz, ysz; nuclear@9: uint32_t *pixels; nuclear@1: }; nuclear@1: nuclear@1: #ifdef __cplusplus nuclear@1: extern "C" { nuclear@1: #endif nuclear@1: nuclear@6: int m3d_init(void); nuclear@6: void m3d_shutdown(void); nuclear@6: nuclear@1: void m3d_set_buffers(struct m3d_image *cbuf, uint16_t *zbuf); nuclear@6: void m3d_clear_color(float r, float g, float b); nuclear@1: void m3d_clear(unsigned int bmask); nuclear@1: nuclear@1: void m3d_enable(int bit); nuclear@1: void m3d_disable(int bit); nuclear@1: nuclear@9: void m3d_viewport(int x, int y, int xsz, int ysz); nuclear@9: nuclear@1: /* matrix stack */ nuclear@1: void m3d_matrix_mode(int mode); nuclear@6: void m3d_push_matrix(void); nuclear@6: void m3d_pop_matrix(void); nuclear@1: void m3d_load_identity(void); nuclear@1: void m3d_load_matrix(const float *m); nuclear@17: void m3d_load_transpose_matrix(const float *m); nuclear@1: void m3d_mult_matrix(const float *m); nuclear@17: void m3d_mult_transpose_matrix(const float *m); nuclear@1: void m3d_translate(float x, float y, float z); nuclear@1: void m3d_rotate(float angle, float x, float y, float z); nuclear@1: void m3d_scale(float x, float y, float z); nuclear@1: void m3d_frustum(float left, float right, float bottom, float top, float nr, float fr); nuclear@1: void m3d_perspective(float vfov, float aspect, float znear, float zfar); nuclear@1: nuclear@1: /* drawing */ nuclear@5: void m3d_vertex_array(const float *varr); nuclear@5: void m3d_normal_array(const float *narr); nuclear@5: void m3d_color_array(const float *carr); nuclear@5: void m3d_texcoord_array(const float *tcarr); nuclear@5: nuclear@5: void m3d_draw(int prim, int vcount); nuclear@9: void m3d_draw_indexed(int prim, const unsigned int *idxarr, int icount); nuclear@1: nuclear@6: /* immediate mode interface */ nuclear@6: void m3d_begin(int prim); nuclear@6: void m3d_end(void); nuclear@6: void m3d_vertex(float x, float y, float z); nuclear@6: void m3d_normal(float x, float y, float z); nuclear@6: void m3d_color(float x, float y, float z); nuclear@6: void m3d_texcoord(float x, float y); nuclear@1: nuclear@1: #ifdef __cplusplus nuclear@1: } nuclear@1: #endif nuclear@1: nuclear@1: #endif /* MIN3D_H_ */