X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2F3dgfx.c;h=39997475d7fa7eb3fca427c1cd0d1c09b3605090;hb=b546d1a5227ee3a263447e279434842d230f700a;hp=17ddd939155f1479dbd8af97c040605c31d9931d;hpb=1442212ba0ff24b868dd29facc2278a26c8a9a18;p=dosdemo diff --git a/src/3dgfx.c b/src/3dgfx.c index 17ddd93..3999747 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]; @@ -423,6 +423,10 @@ 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); } @@ -470,7 +474,7 @@ void g3d_draw_indexed(int prim, const struct g3d_vertex *varr, int varr_size, int32_t ay = pv[1].y - pv[0].y; int32_t bx = pv[2].x - pv[0].x; int32_t by = pv[2].y - pv[0].y; - int32_t cross_z = ax * (by >> 8) - ay * (bx >> 8); + int32_t cross_z = (ax >> 4) * (by >> 4) - (ay >> 4) * (bx >> 4); int sign = (cross_z >> 31) & 1; if(!(sign ^ st->frontface)) {