}
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];
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));
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) {