void CFont::Free() { if (nullptr != font_manager) { glDeleteTextures(1, &font_manager->atlas->id); font_manager->atlas->id = 0; font_manager_delete(font_manager); font_manager = nullptr; } if (nullptr != buffer) { text_buffer_delete(buffer); buffer = nullptr; } if (text_shader > 0) { glDeleteProgram(text_shader); text_shader = 0; } }
// ------------------------------------------------------------------- main --- int main( int argc, char **argv ) { GLFWwindow* window; char* screenshot_path = NULL; if (argc > 1) { if (argc == 3 && 0 == strcmp( "--screenshot", argv[1] )) screenshot_path = argv[2]; else { fprintf( stderr, "Unknown or incomplete parameters given\n" ); exit( EXIT_FAILURE ); } } glfwSetErrorCallback( error_callback ); if (!glfwInit( )) { exit( EXIT_FAILURE ); } glfwWindowHint( GLFW_VISIBLE, GL_FALSE ); glfwWindowHint( GLFW_RESIZABLE, GL_FALSE ); window = glfwCreateWindow( 800, 600, argv[0], NULL, NULL ); if (!window) { glfwTerminate( ); exit( EXIT_FAILURE ); } glfwMakeContextCurrent( window ); glfwSwapInterval( 1 ); TwInit( TW_OPENGL, NULL ); glfwSetFramebufferSizeCallback( window, reshape ); glfwSetWindowRefreshCallback( window, display ); glfwSetCursorPosCallback( window, cursor_pos ); glfwSetMouseButtonCallback( window, mouse_button ); glfwSetKeyCallback( window, keyboard ); #ifndef __APPLE__ GLenum err = glewInit(); if (GLEW_OK != err) { /* Problem: glewInit failed, something is seriously wrong. */ fprintf( stderr, "Error: %s\n", glewGetErrorString(err) ); exit( EXIT_FAILURE ); } fprintf( stderr, "Using GLEW %s\n", glewGetString(GLEW_VERSION) ); #endif init( window ); glfwShowWindow( window ); reshape( window, 800, 600 ); while(!glfwWindowShouldClose( window )) { display( window ); glfwPollEvents( ); if (screenshot_path) { screenshot( window, screenshot_path ); glfwSetWindowShouldClose( window, 1 ); } } TwTerminate(); glDeleteProgram( text_shader ); glDeleteTextures( 1, &font_manager_a->atlas->id ); glDeleteTextures( 1, &font_manager_rgb->atlas->id ); font_manager_a->atlas->id = 0; font_manager_rgb->atlas->id = 0; font_manager_delete( font_manager_rgb ); font_manager_delete( font_manager_a ); text_buffer_delete( text_buffer ); glfwDestroyWindow( window ); glfwTerminate( ); return EXIT_SUCCESS; }
// ------------------------------------------------------------------- main --- int main( int argc, char **argv ) { GLFWwindow* window; char* screenshot_path = NULL; if (argc > 1) { if (argc == 3 && 0 == strcmp( "--screenshot", argv[1] )) screenshot_path = argv[2]; else { fprintf( stderr, "Unknown or incomplete parameters given\n" ); exit( EXIT_FAILURE ); } } glfwSetErrorCallback( error_callback ); if (!glfwInit( )) { exit( EXIT_FAILURE ); } glfwWindowHint( GLFW_VISIBLE, GL_FALSE ); glfwWindowHint( GLFW_RESIZABLE, GL_FALSE ); window = glfwCreateWindow( 1000, 500, argv[0], NULL, NULL ); if (!window) { glfwTerminate( ); exit( EXIT_FAILURE ); } glfwMakeContextCurrent( window ); glfwSwapInterval( 1 ); glfwSetFramebufferSizeCallback( window, reshape ); glfwSetWindowRefreshCallback( window, display ); glfwSetKeyCallback( window, keyboard ); #ifndef __APPLE__ GLenum err = glewInit(); if (GLEW_OK != err) { /* Problem: glewInit failed, something is seriously wrong. */ fprintf( stderr, "Error: %s\n", glewGetErrorString(err) ); exit( EXIT_FAILURE ); } fprintf( stderr, "Using GLEW %s\n", glewGetString(GLEW_VERSION) ); #endif float start=(float)(glfwGetTime()*1000.0f); init(); ////printf("init waste_time: %f\n", (float)(glfwGetTime()*1000.0f)-start); glfwShowWindow( window ); reshape( window, 1000, 500 ); while(!glfwWindowShouldClose( window )) { start=(float)(glfwGetTime()*1000.0f); display( window ); glfwPollEvents( ); ///printf("waste_time: %f\n", (float)(glfwGetTime()*1000.0f)-start); if (screenshot_path) { screenshot( window, (const char*)screenshot_path ); glfwSetWindowShouldClose( window, 1 ); } } glDeleteProgram( bounds_shader ); glDeleteProgram( text_shader ); glDeleteTextures( 1, &font_manager->atlas->id ); font_manager->atlas->id = 0; text_buffer_delete( buffer ); font_manager_delete( font_manager ); glfwDestroyWindow( window ); glfwTerminate( ); return EXIT_SUCCESS; }