void GLWidget::LoadPath(std::string filename)
{
	_paths = _pathIO->LoadPath(filename);
	InitializePaths();
	this->repaint();

	std::cout << this->_img_width << " " << this->_img_height << "\n";
}
void GLWidget::initializeGL()
{
	/* OpenGL format */
    QGLFormat glFormat = QGLWidget::format();
    if (!glFormat.sampleBuffers()) 
	{ 
		//std::cerr << "Could not enable sample buffers." << std::endl; 
		textEdit->append("Could not enable sample buffers.");
		return; 
	}

	/* Stuff I forget what their purposes are */
    glShadeModel(GL_SMOOTH);
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glClearColor( 1.0, 1.0, 1.0, 1.0 );
    glEnable(GL_DEPTH_TEST);

	/* Shaders */
    _shaderProgram = new QOpenGLShaderProgram();
    if (!_shaderProgram->addShaderFromSourceFile(QOpenGLShader::Vertex, SystemParams::v_shader_file.c_str()))
    { 
		//std::cerr << "Cannot load vertex shader." << std::endl; 
		textEdit->append("Cannot load vertex shader.");
		return; 
	}
    if (!_shaderProgram->addShaderFromSourceFile(QOpenGLShader::Fragment, SystemParams::f_shader_file.c_str()))
    { 
		//std::cerr << "Cannot load fragment shader." << std::endl; 
		textEdit->append("Cannot load fragment shader.");
		return; 
	}
    if ( !_shaderProgram->link() )
    { 
		//std::cerr << "Cannot link shaders." << std::endl; 
		textEdit->append("Cannot link shaders.");
		return; 
	}
    _shaderProgram->bind();
    _mvpMatrixLocation = _shaderProgram->uniformLocation("mvpMatrix");
    _colorLocation = _shaderProgram->attributeLocation("vertexColor");
    _vertexLocation = _shaderProgram->attributeLocation("vert");
    _use_color_location = _shaderProgram->uniformLocation("use_color");

	/* for VBO and VAO */
    _vDataHelper = new VertexDataHelper(_shaderProgram);
	_pathIO = new PathIO();

	// comment these
    //CreateCurve();
    //BuildCurveVertexData();

	// You want image or the actual path ?
	//SetImage(QString::fromStdString(SystemParams::temp_png_location));
	if (!_pathsVao.isCreated() && _paths.size() > 0)
	{
		InitializePaths();
	}

	// a box
	_boxes.push_back(ABox(AVector(0, 0),
						  AVector(0, this->_img_height),
						  AVector(this->_img_width, 0),
						  AVector(this->_img_width, this->_img_height)));
	_vDataHelper->BuildQuadsVertexData(_boxes, &_boxVbo, &_boxVao);

	// an example how to render a triangle
	//_triangles.push_back(ATriangle(AVector(1, 1), AVector(25, 25), AVector(1, 50)));
	//_vDataHelper->BuildTrianglesVertexData(_triangles, &_triangleVbo, &_triangleVao, QVector3D(1.0, 0.25, 0.25));

	// don't remove this
	textEdit->append("OpenGL is initialized");
	_isGLInitialized = true;
}
Esempio n. 3
0
int usdxMain(int argc, char ** argv)
{
	try
	{
		const char * windowTitle = USDXVersionStr();

		if (Platform::TerminateIfAlreadyRunning(windowTitle))
			return 1;

		// fix the locale for string-to-float parsing in C-libs
		Common::SetDefaultNumericLocale();

		// initialize SDL
		// without SDL_INIT_TIMER SDL_GetTicks() might return strange values
		if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER) == -1)
			return 1;

		// initialize SDL_mixer
		if (Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, MIX_DEFAULT_CHANNELS, 4096) == -1)
			return 1;

		SDL_StartTextInput();

		// create LuaCore first so other classes can register their events
		new LuaCore();

		// load the command-line arguments
		Params.Load(argc, argv);

		// Setup the logger/benchmarker
		new Log();
		sLog.BenchmarkStart(0);

		// Setup the texture manager
		new TextureMgr();

		// Language
		sLog.BenchmarkStart(1);
		sLog.Status("Initialize Paths", "Initialization");
		InitializePaths();
		sLog.Status("Load Language", "Initialization");
		new Language();

		// Add const values
		sLanguage.AddConst("US_VERSION", USDXVersionStr());
		sLog.BenchmarkEnd(1);
		sLog.Benchmark(1, "Loading Language");

		// Skins
		sLog.BenchmarkStart(1);
		sLog.Status("Loading Skin List", "Initialization");
		new Skins();
		sLog.BenchmarkEnd(1);
		sLog.Benchmark(1, "Loading Skin List");

		// Themes
		sLog.BenchmarkStart(1);
		sLog.Status("Loading Theme List", "Initialization");
		new Themes();
		sLog.BenchmarkEnd(1);
		sLog.Benchmark(1, "Loading Theme List");

		// INI file
		sLog.BenchmarkStart(1);
		sLog.Status("Loading INI", "Initialization");
		new Ini();
		sIni.Load();

		// Set the language.
		// NOTE: Command-line takes precedence.
		if (!Params.LanguageName.empty())
			sLanguage.ChangeLanguage(Params.LanguageName);
		else
			sLanguage.ChangeLanguage(sIni.LanguageName);
		
		// It is possible that this is the first run, so create an .ini file if necessary.
		sLog.Status("Writing INI", "Initialization");
		sIni.Save();

		sLog.BenchmarkEnd(1);
		sLog.Benchmark(1, "Loading INI");

		// Sound
		sLog.BenchmarkStart(1);
		sLog.Status("Initialize Sound", "Initialization");
		new SoundLibrary();
		sLog.BenchmarkEnd(1);
		sLog.Benchmark(1, "Initializing Sound");

		// Lyrics engine with media reference timer
		// new LyricsState();
		
		// Theme
		sLog.BenchmarkStart(1);
		sLog.Status("Load Theme", "Initialization");
		sThemes.LoadTheme(sIni.Theme, sIni.ThemeColor);
		sLog.BenchmarkEnd(1);
		sLog.Benchmark(1, "Loading Theme");

		// Covers cache
		sLog.BenchmarkStart(1);
		sLog.Status("Creating Covers cache", "Initialization");
		// new Covers();
		sLog.BenchmarkEnd(1);
		sLog.Benchmark(1, "Loading Covers cache");

		// Category covers
		sLog.BenchmarkStart(1);
		sLog.Status("Creating Category Covers array", "Initialization");
		// new CatCovers();
		sLog.BenchmarkEnd(1);
		sLog.Benchmark(1, "Loading Category Covers array");

		// Songs
		sLog.BenchmarkStart(1);
		sLog.Status("Creating song array", "Initialization");
		// new Songs();
		sLog.Status("Creating 2nd song array", "Initialization");
		// new CatSongs();
		sLog.BenchmarkEnd(1);
		sLog.Benchmark(1, "Loading songs");

		// Graphics
		sLog.BenchmarkStart(1);
		sLog.Status("Initialize 3D", "Initialization");
		Initialize3D(windowTitle);
		sLog.BenchmarkEnd(1);
		sLog.Benchmark(1, "Initializing 3D");

		// Score saving
		sLog.BenchmarkStart(1);
		sLog.Status("Loading database", "Initialization");
		new Database();
		if (ScoreFile.empty())
		{
			Platform::GetGameUserPath(&ScoreFile);
			ScoreFile /= "Ultrastar.db";
		}
		sDatabase.Init(ScoreFile);
		sLog.BenchmarkEnd(1);
		sLog.Benchmark(1, "Loading database");

		// Playlist manager
		sLog.BenchmarkStart(1);
		sLog.Status("Playlist manager", "Initialization");
		// new PlaylistManager();
		sLog.BenchmarkEnd(1);
		sLog.Benchmark(1, "Loading playlist manager");

		// Effect manager (for the twinkling golden stars and such)
		sLog.BenchmarkStart(1);
		sLog.Status("Effect manager", "Initialization");
		// new EffectManager();
		sLog.BenchmarkEnd(1);
		sLog.Benchmark(1, "Loading effect manager");

		// Joypad
		if (sIni.Joypad || Params.Joypad)
		{
			sLog.BenchmarkStart(1);
			sLog.Status("Joystick", "Initialization");
			// new Joystick();
			sLog.BenchmarkEnd(1);
			sLog.Benchmark(1, "Loading joystick");
		}

		// Party manager
		sLog.BenchmarkStart(1);
		sLog.Status("Party manager", "Initialization");
		// new PartyGame();
		sLog.BenchmarkEnd(1);
		sLog.Benchmark(1, "Loading party manager");

		// Lua
		sLog.BenchmarkStart(1);
		// sLuaCore.RegisterModule("Log",        LuaLog_Lib_f);
		// sLuaCore.RegisterModule("Gl",         LuaGl_Lib_f);
		// sLuaCore.RegisterModule("TextGl",     LuaTextGl_Lib_f);
		// sLuaCore.RegisterModule("Party",      LuaParty_Lib_f);
		// sLuaCore.RegisterModule("ScreenSing", LuaScreenSing_Lib_f);
		sLog.BenchmarkEnd(1);
		sLog.Benchmark(1, "Initializing LuaCore");

		// Lua plugins
		sLog.BenchmarkStart(1);
		sLuaCore.LoadPlugins();
		sLog.BenchmarkEnd(1);
		sLog.Benchmark(1, "Loading Lua plugins");
		sLuaCore.DumpPlugins();

		sLog.BenchmarkEnd(0);
		sLog.Benchmark(0, "Loading time");

		// Prepare software cursor
		sDisplay.SetCursor();

		// Start background music
		sSoundLib.StartBgMusic();
		
		// Check microphone settings, go to record options if they are incorrect
		/*
		int badPlayer = AudioInputProcessor::ValidateSettings();
		if (badPlayer >= 0)
		{
			ScreenPopupError::ShowPopup("ERROR_PLAYER_DEVICE_ASSIGNMENT", BadPlayer + 1);
			sDisplay.CurrentScreen->FadeTo(&ScreenOptionsRecord);
		}
		*/

		// Start main loop
		sLog.Status("Main loop", "Initialization");
		usdxMainLoop();
	}
	catch (const CriticalException& e)
	{
		printf("Critical exception occurred: %s\n", e.what());
	}
	catch (const std::exception& e)
	{
		printf("Unhandled exception occurred: %s\n", e.what());
	}
	catch (...)
	{
		printf("Unhandled exception occurred.\n");
	}

	FreeGfxResources();

	// delete PartyGame::getSingletonPtr();
	// delete Joystick::getSingletonPtr();
	// delete EffectManager::getSingletonPtr();
	// delete PlaylistManager::getSingletonPtr();
	delete Database::getSingletonPtr();
	// delete CatSongs::getSingletonPtr();
	// delete Songs::getSingletonPtr();
	// delete CatCovers::getSingletonPtr();
	// delete Covers::getSingletonPtr();
	// delete LyricsState::getSingletonPtr();
	delete Ini::getSingletonPtr();
	delete Themes::getSingletonPtr();
	delete Skins::getSingletonPtr();
	delete Language::getSingletonPtr();
	delete TextureMgr::getSingletonPtr();
	delete Log::getSingletonPtr();
	delete LuaCore::getSingletonPtr();
	delete SoundLibrary::getSingletonPtr();

	SDL_StopTextInput();
	Mix_CloseAudio();
	SDL_Quit();

	return 0;
}