10 static void destroy(void);
11 static void start(long trans_time);
12 static void draw(void);
14 static struct screen scr = {
23 static float cam_theta = 0, cam_phi = 10;
24 static float cam_dist = 6;
26 static struct g3d_mesh gmesh;
27 #define GMESH_GRIDSZ 20
29 static struct image gtex;
31 struct screen *cybersun_screen(void)
40 if(gen_plane_mesh(&gmesh, GMESH_SIZE, GMESH_SIZE, GMESH_GRIDSZ, GMESH_GRIDSZ) == -1) {
43 for(i=0; i<gmesh.vcount; i++) {
44 gmesh.varr[i].u *= GMESH_GRIDSZ;
45 gmesh.varr[i].v *= GMESH_GRIDSZ;
47 if(load_image(>ex, "data/pgrid.png") == -1) {
54 static void destroy(void)
60 static void start(long trans_time)
62 g3d_matrix_mode(G3D_PROJECTION);
64 g3d_perspective(50.0, 1.3333333, 0.5, 500.0);
66 g3d_enable(G3D_CULL_FACE);
68 g3d_clear_color(0, 0, 0);
71 static void draw(void)
75 mouse_orbit_update(&cam_theta, &cam_phi, &cam_dist);
77 g3d_matrix_mode(G3D_MODELVIEW);
79 g3d_translate(0, 0, -cam_dist);
80 g3d_rotate(cam_phi, 1, 0, 0);
81 g3d_rotate(cam_theta, 0, 1, 0);
83 g3d_mult_matrix(sball_matrix);
86 g3d_clear(G3D_COLOR_BUFFER_BIT | G3D_DEPTH_BUFFER_BIT);
88 g3d_set_texture(gtex.width, gtex.height, gtex.pixels);
89 g3d_enable(G3D_TEXTURE_2D);
92 g3d_rotate(-90, 1, 0, 0);
96 g3d_disable(G3D_TEXTURE_2D);
98 swap_buffers(fb_pixels);