- _CHECK_IO(fread(&count, sizeof(count), 1, file));
-
- float x1, y1, z1, x2, y2, z2, x3, y3, z3;
- for (int i = 0; i < count; ++i) {
- _CHECK_IO(fread(&x1, sizeof(float), 1, file));
- _CHECK_IO(fread(&y1, sizeof(float), 1, file));
- _CHECK_IO(fread(&z1, sizeof(float), 1, file));
- _CHECK_IO(fread(&x2, sizeof(float), 1, file));
- _CHECK_IO(fread(&y2, sizeof(float), 1, file));
- _CHECK_IO(fread(&z2, sizeof(float), 1, file));
- _CHECK_IO(fread(&x3, sizeof(float), 1, file));
- _CHECK_IO(fread(&y3, sizeof(float), 1, file));
- _CHECK_IO(fread(&z3, sizeof(float), 1, file));
- tri_t* t = tri_alloc(
- vert_new2((scal_t)x1, (scal_t)y1, (scal_t)z1),
- vert_new2((scal_t)x2, (scal_t)y2, (scal_t)z2),
- vert_new2((scal_t)x3, (scal_t)y3, (scal_t)z3)
- );
- list_push2(l, t, mem_free);
- _CHECK_IO(fread(&x1, sizeof(float), 1, file));
- _CHECK_IO(fread(&y1, sizeof(float), 1, file));
- _CHECK_IO(fread(&z1, sizeof(float), 1, file));
- _CHECK_IO(fread(&x2, sizeof(float), 1, file));
- _CHECK_IO(fread(&y2, sizeof(float), 1, file));
- _CHECK_IO(fread(&z2, sizeof(float), 1, file));
- _CHECK_IO(fread(&x3, sizeof(float), 1, file));
- _CHECK_IO(fread(&y3, sizeof(float), 1, file));
- _CHECK_IO(fread(&z3, sizeof(float), 1, file));
- t->a.n = vec_new((scal_t)x1, (scal_t)y1, (scal_t)z1);
- t->b.n = vec_new((scal_t)x2, (scal_t)y2, (scal_t)z2);
- t->c.n = vec_new((scal_t)x3, (scal_t)y3, (scal_t)z3);
- }
+ scene_t* s = (scene_t*)mem_alloc(sizeof(scene_t));
+ s->models = NULL;
+ s->w = w;
+ s->h = h;
+ s->view = MAT_LOOKAT(vec_new( (scal_t)eyeX, (scal_t)eyeY, (scal_t)eyeZ),
+ vec_new((scal_t)spotX, (scal_t)spotY, (scal_t)spotZ),
+ vec_new( (scal_t)upX, (scal_t)upY, (scal_t)upZ));
+ s->eye = vec_new(eyeX, eyeY, eyeZ);
+ s->projection = MAT_PERSPECTIVE((scal_t)fovy, (scal_t)aspect, (scal_t)near, (scal_t)far);
+ s->lights = NULL;
+ s->ambient = color_new(S(0.05), S(0.05), S(0.05), S(1.0));