Ejemplo n.º 1
0
static void create_platonic_scene(char const* name)
{
    START_SCENE;

    shape = par_shapes_create_dodecahedron();
    par_shapes_translate(shape, 0, 0.934, 0);
    par_shapes_merge(scene, shape);
    par_shapes_free_mesh(shape);

    shape = par_shapes_create_tetrahedron();
    par_shapes_translate(shape, 1, 0, 3.5);
    par_shapes_merge(scene, shape);
    par_shapes_free_mesh(shape);

    shape = par_shapes_create_octohedron();
    par_shapes_translate(shape, -2.25, 0.9, -.5);
    par_shapes_merge(scene, shape);
    par_shapes_free_mesh(shape);

    shape = par_shapes_create_icosahedron();
    par_shapes_translate(shape, -1, 0.8, 3.5);
    par_shapes_merge(scene, shape);
    par_shapes_free_mesh(shape);

    shape = par_shapes_create_cube();
    par_shapes_rotate(shape, PAR_PI / 5.0, (float[]) {0, 1, 0});
Ejemplo n.º 2
0
void init(float winwidth, float winheight, float pixratio)
{
    resolution = pixratio * winwidth;
    par_shapes_mesh* shape;
    shape = par_shapes_create_cylinder(30, 3);
    float axis[3] = {1, 0, 0};
    par_shapes_rotate(shape, PARG_PI * 0.5, axis);
    cylinder = parg_mesh_from_shape(shape);
    par_shapes_free_mesh(shape);

    shape = par_shapes_create_plane(3, 3);
    par_shapes_scale(shape, 4, 4, 1);
    par_shapes_translate(shape, -2, -2, -1);
    backdrop = parg_mesh_from_shape(shape);
    par_shapes_free_mesh(shape);

    kleingeo = parg_mesh_from_asset(M_KLEIN);
    parg_mesh_send_to_gpu(kleingeo);

    kleintex = parg_texture_from_asset_linear(T_KLEIN);
    abstract = parg_texture_from_asset(T_ABSTRACT);
    logo = parg_texture_from_asset(T_LOGO);
    rust = parg_texture_from_asset(T_RUST);
    billboard = parg_mesh_rectangle(1, 1);
    reflection = parg_framebuffer_create_empty(
        512, 512, PARG_FBO_LINEAR | PARG_FBO_ALPHA | PARG_FBO_DEPTH);

    const Vector4 transparent = {0, 0, 0, 0};
    parg_state_clearcolor(transparent);

    parg_state_depthtest(1);
    parg_state_cullfaces(1);
    parg_shader_load_from_asset(S_SIMPLE);
    const float h = 1.0f;
    const float w = h * winwidth / winheight;
    const float znear = 4;
    const float zfar = 20;
    projection = M4MakeFrustum(-w, w, -h, h, znear, zfar);
    Point3 eye = {0, 1.8, 5};
    Point3 target = {0, 0.7, 0};
    Vector3 up = {0, 1, 0};
    view = M4MakeLookAt(eye, target, up);
    model = M4MakeIdentity();
}