int main() { System::inst().init(); Demo *demo = new Demo(); if (demo->initOk()) { TextureManager::inst().init(); TextureManager::inst().loadImages(); ShaderManager::inst().init(); // demo->addScene("core", new TestCoreProfileScene()); // demo->addSceneToTimeline("core", 0, 1000000, 0); // demo->addScene("terrain", new TerrainScene()); // demo->addSceneToTimeline("terrain", 0, 1000000, 0); demo->addScene("heightmap", new HeightMapScene()); demo->addSceneToTimeline("heightmap", 0, 1000000, 0); // demo->addScene("warping", new WarpingScene()); // demo->addSceneToTimeline("warping", 0, 1000000, 0); TextureManager::inst().uploadImages(); ShaderManager::inst().loadShaders(); demo->initEffects(); demo->start(); System::inst().setWindowTitle("BMT::re engine test"); bool demorunning = true; while (demorunning) { System::inst().update(); //too often title updating kills gnome-shell static int lastUpdate = System::inst().getTime(); if (System::inst().getTime() - lastUpdate > 200) { stringstream ss; // ss << "time = " << System::inst().getTime() << " fps = " << System::inst().getFPS(); ss << System::inst().getFPS() << " fps"; System::inst().setWindowTitle(ss.str().c_str()); lastUpdate = System::inst().getTime(); } demorunning = System::inst().pollEvents() && System::inst().isRunning(); demo->update(); demo->draw(); System::inst().swapBuffers(); } demo->stop(); } // Clean up everything delete demo; // Exit program return 0; }
// APPLICATION ENTRY // ----------------- int main() { int width = 1024; int height = 768; demo_ptr = NULL; is_running = true; //// init glfwSetErrorCallback(error_callback); if(!glfwInit()) { fprintf(stderr, "GLFW Error: %d\n", glfwGetError()); exit(EXIT_FAILURE); } glfwWindowHint(GLFW_DEPTH_BITS, 16); glfwWindowHint(GLFW_FSAA_SAMPLES, 4); //#if JADI_PLATFORM != JADI_OSX // doesn't work if we specify 3.2 - errors on line 78 of DepthOfField.cpp (GL_INVALID_ENUM) //glfwWindowHint( GLFW_OPENGL_VERSION_MAJOR, 3 ); //glfwWindowHint( GLFW_OPENGL_VERSION_MINOR, 2 ); //glfwWindowHint( GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE ); //#endif GLFWwindow window = glfwCreateWindow(width, height, GLFW_WINDOWED, "Simulation", NULL); if(!window) { printf("ERROR: cannot open window.\n"); exit(EXIT_FAILURE); } glfwSetWindowSizeCallback(window, window_size_callback); glfwSetWindowCloseCallback(window, window_close_callback); glfwSetMouseButtonCallback(window, mouse_button_callback); glfwSetCursorPosCallback(window, cursor_callback); glfwSetScrollCallback(window, scroll_callback); glfwSetKeyCallback(window, key_callback); glfwSetCharCallback(window, char_callback); glfwMakeContextCurrent(window); #if JADI_PLATFORM==JADI_OSX glewExperimental = true; #endif GLenum err = glewInit(); if (GLEW_OK != err) { fprintf(stderr, "GLEW Error: %s\n", glewGetErrorString(err)); exit(EXIT_FAILURE); } Demo demo; demo.mouse_x = demo.mouse_y = demo.prev_mouse_x = demo.prev_mouse_y = 0; demo.pressed_mouse_button = 0; demo.is_mouse_down = false; demo_ptr = &demo; demo.window = &window; demo.setup(); while(is_running) { glfwPollEvents(); demo.update(); demo.draw(); glfwSwapBuffers(window); } demo_ptr->onWindowClose(); glfwTerminate(); exit(EXIT_SUCCESS); };
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { #else int main(void) { #endif //first initialize system g_system.init(); //and then the demo Demo *demo = new Demo("data/script.txt"); //all ok? if (demo->initOk()) { g_demo = demo; //initalize managers g_textures.init(); g_shaders.init(); g_textures.loadImages(); // g_system.loadMeshes(); g_fonts.loadFonts(); //initialize the actual demo demo->addScene("heart", new Heart()); demo->addScene("metablob", new Metablob()); demo->addScene("brain", new Brain()); demo->addScene("ear", new EarScene()); demo->addScene("pandazoom", new PandaZoomScene()); demo->addScene("credits", new CreditsScene()); // demo->addScene("treescene", new TreeScene()); //construct the timeline // demo->addSceneToTimeline("heart", 0, 4470, 1000); // demo->addSceneToTimeline("metablob", 4470, 26180, 2000); // demo->addSceneToTimeline("brain", 26180, 62300, 3000); demo->addSceneToTimeline("pandazoom", 0, 260000, 2000); // demo->addSceneToTimeline("ear", 0, 260000, 2000); // demo->addSceneToTimeline("credits", 0, 260000, 2000); //Наш примерный таймлайн // начало конец длител музыка рисуется // 0 4670 4670 mute хз // 4670 26180 21510 beat сцена1 // 26180 62300 36120 пиу-пиу+beat1+beat2 сцена2 // 62300 69840 7540 пиу-пиу+beat1 сцена2' // 69840 72320 2480 дзззз какой-то переход // 72320 82100 9780 новая пищалка сцена3 // 82100 90160 8060 она же+ещё эффект сцена3' // 90160 114389 24229 то же+бубен фигачит сцена3'' // 114389 122159 7770 то же без пищ соло хз // 122159 146200 24041 фигачит мягко сцена4 // 146200 170090 23890 фигачит космос сцена5 // 170090 182370 12280 трааанс сцена6 // 182370 246258 63888 транс+дисторшн сцена7 // 246258 260000 13742 просто дисторшн титры // demo->addSceneToTimeline("treescene", 0, 240500, 666); //init the demo and play g_textures.uploadImages(); g_system.uploadMeshes(); g_shaders.loadShaders(); demo->initEffects(); g_system.dumpState(); demo->start(); bool demorunning = true; while (demorunning) { //process keyboard input and adjust demo accordingly g_system.handleInput(demo); //update the system (sync etc) g_system.update(); //update fft data g_pitch.update(); stringstream ss; ss << "time = " << g_system.getTime() << " fps = " << g_system.getFPS(); g_system.setWindowTitle(ss.str()); // g_system.setWindowTitle("BMT :: Demo"); demorunning = g_system.pollEvents() && g_system.demoRunning(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); demo->update(); demo->draw(); g_system.swapBuffers(); } demo->stop(); g_textures.dumpUnusedImages(); } delete demo; return 0; }