#include #include "main.h" #include "data/cube.h" #include "data/axis.h" #include "data/shaders.h" #define WIDTH 512 #define HEIGHT 512 unsigned char palette[] = { 16, 0xEB,0xD3,0xF8,0xff, 0xEB,0xD4,0xF8,0xff, 0xEB,0xD5,0xF8,0xff, 0x7A,0x1C,0xAC,0xff, }; const char * wname = "manigraph: manifold grapher"; int main( void ) { id_t shader, texture; mesh_t m_cube, m_axis; window_t window; if( !( window = init_window( WIDTH, HEIGHT, wname ) ) ) goto error_window; use_window( window ); set_clean_color_context( 0x2E, 0x07, 0x3F ); if( !( shader = create_shader() ) ) goto error_shader; gload_program( shader, vs, VERTEX ); gload_program( shader, fs, FRAGMENT ); use_shader( shader ); load_fix_matrix( shader, (float)WIDTH/HEIGHT ); if( !( m_cube = create_mesh( d_cube ) ) ) goto error_mesh_cube; if( !( m_axis = create_mesh( d_axis ) ) ) goto error_mesh_axis; texture=create_palette_texture( palette ); use_texture( texture ); while( is_open_window( window ) ) { quat_t q; q=poll_input( window ); load_rot_matrix( shader, q ); clean_context(); load_mdl_matrix( shader, 0, 0 ); draw_mesh( m_axis ); load_mdl_matrix( shader, 1, 1 ); draw_mesh( m_axis ); load_mdl_matrix( shader, 2, 2 ); draw_mesh( m_axis ); load_mdl_matrix( shader, 0, 3 ); draw_mesh( m_cube ); } destroy_texture( texture ); destroy_mesh( m_axis ); destroy_mesh( m_cube ); destroy_shader( shader ); close_window( window ); return 0; error_mesh_axis: destroy_mesh( m_cube ); error_mesh_cube: destroy_shader( shader ); error_shader: close_window( window ); error_window: return 1; }