nuclear@1: #ifndef M3DIMPL_H_ nuclear@1: #define M3DIMPL_H_ nuclear@1: nuclear@1: #include "min3d.h" nuclear@1: nuclear@1: #define MSTACK_SIZE 16 nuclear@1: nuclear@1: struct min3d_mstack { nuclear@1: float m[MSTACK_SIZE][16]; nuclear@1: int top; nuclear@1: }; nuclear@1: nuclear@2: struct min3d_vertex { nuclear@2: float pos[4]; nuclear@9: uint32_t color; nuclear@2: float normal[4]; nuclear@2: float tex[2]; nuclear@2: }; nuclear@2: nuclear@6: #define IM_VBSIZE 4 nuclear@6: nuclear@1: struct min3d_context { nuclear@1: struct m3d_image *cbuf; nuclear@1: uint16_t *zbuf; nuclear@1: nuclear@1: unsigned long state; nuclear@6: int clear_color[3]; nuclear@1: nuclear@1: int mmode; /* matrix mode */ nuclear@1: struct min3d_mstack mstack[2]; nuclear@5: nuclear@6: int vport[4]; nuclear@6: nuclear@6: float *vert_array; nuclear@6: float *norm_array; nuclear@6: float *col_array; nuclear@6: float *tc_array; nuclear@5: nuclear@5: /* immediate mode state */ nuclear@6: float im_varr[IM_VBSIZE * 3]; nuclear@6: float im_narr[IM_VBSIZE * 3]; nuclear@6: float im_carr[IM_VBSIZE * 3]; nuclear@6: float im_tarr[IM_VBSIZE * 2]; nuclear@6: nuclear@6: int im_prim, im_idx; nuclear@6: float im_color[4]; nuclear@6: float im_normal[3]; nuclear@6: float im_texcoord[2]; nuclear@3: }; nuclear@3: nuclear@3: extern struct min3d_context *m3dctx; nuclear@3: nuclear@9: #define ENABLED(x) (m3dctx->state & (1 << x)) nuclear@9: nuclear@9: void m3d_draw_point(struct min3d_vertex *v); nuclear@9: void m3d_draw_line(struct min3d_vertex *v); nuclear@9: void m3d_draw_poly(struct min3d_vertex *v, int numv); nuclear@1: nuclear@1: #endif /* M3DIMPL_H_ */