X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=dosdemo;a=blobdiff_plain;f=src%2F3dgfx.c;h=a4af73a5015329f9dafb34440146c62adadf3a0e;hp=673122d07fc29f66f2b7e76956736fe2cf2b72b9;hb=45f6f46fe758d15aafccdb69ae837fc7d84ee466;hpb=8cee0ffb00cce3d81487f1161286ac299db7d044 diff --git a/src/3dgfx.c b/src/3dgfx.c index 673122d..a4af73a 100644 --- a/src/3dgfx.c +++ b/src/3dgfx.c @@ -396,7 +396,7 @@ void g3d_draw(int prim, const struct g3d_vertex *varr, int varr_size) } void g3d_draw_indexed(int prim, const struct g3d_vertex *varr, int varr_size, - const int16_t *iarr, int iarr_size) + const uint16_t *iarr, int iarr_size) { int i, j, nfaces; struct pvertex pv[16]; @@ -404,6 +404,9 @@ void g3d_draw_indexed(int prim, const struct g3d_vertex *varr, int varr_size, int vnum = prim; /* primitive vertex counts correspond to enum values */ int mvtop = st->mtop[G3D_MODELVIEW]; int ptop = st->mtop[G3D_PROJECTION]; + struct g3d_vertex *tmpv; + + tmpv = alloca(prim * 6 * sizeof *tmpv); /* calc the normal matrix */ memcpy(st->norm_mat, st->mat[G3D_MODELVIEW][mvtop], 16 * sizeof(float)); @@ -423,12 +426,15 @@ void g3d_draw_indexed(int prim, const struct g3d_vertex *varr, int varr_size, if(st->opt & G3D_LIGHTING) { shade(v + i); } + if(st->opt & G3D_TEXTURE_GEN) { + v[i].u = v[i].nx * 0.5 + 0.5; + v[i].v = v[i].ny * 0.5 + 0.5; + } xform4_vec3(st->mat[G3D_PROJECTION][ptop], &v[i].x); } /* clipping */ for(i=0; i<6; i++) { - struct g3d_vertex tmpv[16]; memcpy(tmpv, v, vnum * sizeof *v); if(clip_frustum(v, &vnum, tmpv, vnum, i) < 0) {