#ifndef BEZIER_H #define BEZIER_H #define TEXTURE_COUNT 4 #define TEXTURE_BACK 0 #define TEXTURE_BUBBLE 1 #define TEXTURE_LAMPROLOGUS 2 #define TEXTURE_ANGELALTUM 3 // Default size is 0.05. Bubbles will vary in size. #define BUBBLE_WIDTH (0.025) #define BUBBLE_SPEED (0.005) #define MAX_BUBBLE 100 typedef struct { float size; float x; float y; float sep; // Stereogram separation } Bubble_t; typedef struct { float v[3]; double control_val[3]; } Position_t; typedef struct { GLuint call_list; float t; float x,y,z; float dx,dy,dz; float dx1,dy1,dz1; float dx2,dy2,dz2; } Fish_t; #define MAX_FISHES 8 typedef struct { int Stereo_Repeat; int fish_count; GLuint frame; float bubble_burst; float fish_speed; GLuint texture[TEXTURE_COUNT]; Bubble_t bubble[MAX_BUBBLE]; GLuint lamprologus_list; GLuint angel_altum_list; Fish_t fishes[MAX_FISHES]; } App_Data_t; extern App_Data_t *init_gl(void); extern void draw_gl(App_Data_t *app_data); extern void kill_gl(App_Data_t *app_data); void init_surface(void); extern void Init_Fish(Fish_t *f, GLuint call_list); extern void Advance_Fish(Fish_t *f); extern float Stereo_Sep(App_Data_t *app_data, float z); extern void Evaluate_Fish(App_Data_t *app_data, Fish_t *f); #endif