rayzor
diff src/min3d.c @ 5:5fcf72837b69
fixed the dosemu bit
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sun, 06 Apr 2014 02:43:24 +0300 |
parents | 9035507275d6 |
children | a68dbf80d547 |
line diff
1.1 --- a/src/min3d.c Sun Apr 06 01:12:50 2014 +0300 1.2 +++ b/src/min3d.c Sun Apr 06 02:43:24 2014 +0300 1.3 @@ -1,4 +1,6 @@ 1.4 #include <stdlib.h> 1.5 +#include <string.h> 1.6 +#include <math.h> 1.7 #include "min3d.h" 1.8 #include "m3dimpl.h" 1.9 1.10 @@ -233,11 +235,36 @@ 1.11 } 1.12 1.13 /* drawing */ 1.14 -void m3d_draw(int prim, const float *varr, int vcount) 1.15 +void m3d_vertex_array(const float *varr) 1.16 +{ 1.17 + m3dctx->vert_array = varr; 1.18 +} 1.19 + 1.20 +void m3d_normal_array(const float *narr) 1.21 +{ 1.22 + m3dctx->norm_array = narr; 1.23 +} 1.24 + 1.25 +void m3d_color_array(const float *carr) 1.26 +{ 1.27 + m3dctx->col_array = carr; 1.28 +} 1.29 + 1.30 +void m3d_texcoord_array(const float *tcarr) 1.31 +{ 1.32 + m3dctx->tc_array = tcarr; 1.33 +} 1.34 + 1.35 + 1.36 +void m3d_draw(int prim, int vcount) 1.37 { 1.38 int i; 1.39 struct min3d_vertex v[4]; 1.40 struct min3d_vertex resv[16]; 1.41 + const float *varr = m3dctx->vert_array; 1.42 + const float *carr = m3dctx->col_array; 1.43 + 1.44 + if(!varr) return; 1.45 1.46 for(i=0; i<vcount; i++) { 1.47 int idx = i % prim; 1.48 @@ -245,6 +272,9 @@ 1.49 v[idx].pos[0] = *varr++; 1.50 v[idx].pos[1] = *varr++; 1.51 v[idx].pos[2] = *varr++; 1.52 + v[idx].color[0] = carr ? *carr++ : m3dctx->cur_color[0]; 1.53 + v[idx].color[1] = carr ? *carr++ : m3dctx->cur_color[1]; 1.54 + v[idx].color[2] = carr ? *carr++ : m3dctx->cur_color[2]; 1.55 1.56 if(idx == prim - 1) { 1.57 int resnum = proc_prim(prim, resv, v); 1.58 @@ -264,7 +294,7 @@ 1.59 } 1.60 } 1.61 1.62 -void m3d_draw_indexed(int prim, const float *varr, const int *idxarr, int icount) 1.63 +void m3d_draw_indexed(int prim, const int *idxarr, int icount) 1.64 { 1.65 /* TODO */ 1.66 }