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  }