LINUX.ORG.RU

SFML & OpenGL. 2 окна и больше

 ,


0

1

Всем привет, как рисовать 2 окна средствами SFML 2.1, вроде бы делаю как написано в документации, но при создании второго она вылетает:

*** Error in `./core': free(): invalid pointer: 0x00007f4c9e25c800 ***
вот как делаю:
sf::Window MainWin(sf::VideoMode(WindowWidth, WindowHeight, 32), "", sf::Style::Default, Settings);
sf::Window Dialog(sf::VideoMode(SODialogWidth, SODialogHeight, 32), "", sf::Style::Default, Settings);
...

★★★

Ответ на: комментарий от kravich
int main() {
	//
	setlocale(LC_CTYPE, "");
	LoggerCreate ("log.txt");

	sf::ContextSettings Settings;
	Settings.depthBits         = 24;
	Settings.stencilBits       = 8;
	Settings.antialiasingLevel = 0;
	Settings.majorVersion      = OGLMajor;
	Settings.minorVersion      = OGLMinor;

	ScreenWidth  = sf::VideoMode::getDesktopMode().width;
	ScreenHeight = sf::VideoMode::getDesktopMode().height;

	sf::Window App    (sf::VideoMode (WindowWidth  , WindowHeight  , 32), "", sf::Style::Default, Settings);
	sf::Window Dialog (sf::VideoMode (SODialogWidth, SODialogHeight, 32), "", sf::Style::Default, Settings);
	glewInit();
	sf::Clock Clock;
	InitMemory();

	aWindowHandle = App.getSystemHandle();

	Core = new Engine();

	glEnable    (GL_MULTISAMPLE);
	glDisable   (GL_DEPTH_TEST);
	glEnable    (GL_BLEND);
	glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

	bool running = true;

	while (running) {
		//
		sf::Event Event;

		while (App.pollEvent(Event)) {
			switch (Event.type) {
				// Window
				case sf::Event::Closed	: running = false; break;
				case sf::Event::Resized	: Resized (Event.size.width, Event.size.height); break;
				
				// Mouse
				case sf::Event::MouseMoved	    : MouseMove (Event.mouseMove.x  , Event.mouseMove.y); break;
				case sf::Event::MouseButtonPressed  : MouseDown (Event.mouseButton.x, Event.mouseButton.y, Event.mouseButton.button); break;
				case sf::Event::MouseButtonReleased : MouseUp   (Event.mouseButton.x, Event.mouseButton.y, Event.mouseButton.button); break;
					
				// Keyboard
				case sf::Event::KeyPressed  : KeyPressed  (Event.key.code); break;
				case sf::Event::TextEntered : TextEntered (Event.text.unicode); break;
				case sf::Event::KeyReleased : KeyReleased (Event.key.code); break;
			}
		}
		//
		App.setActive();
		//
		glViewport (0, 0, ScreenWidth, ScreenHeight);
		glClearColor (51/255.0f, 51/255.0f, 51/255.0f, 0);
		glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
		//
		CurrTime = Clock.getElapsedTime().asSeconds();
		DeltaTime = (CurrTime - LastTime)*0.001f;
		Draw();
		LastTime = CurrTime;
		//
		glFlush();
		App.display();

		Dialog.setActive();
		//
		glViewport (0, 0, ScreenWidth, ScreenHeight);
		glClearColor (51/255.0f, 51/255.0f, 51/255.0f, 0);
		glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
		//
		CurrTime = Clock.getElapsedTime().asSeconds();
		DeltaTime = (CurrTime - LastTime)*0.001f;
		Draw();
		LastTime = CurrTime;
		//
		glFlush();
		Dialog.display();
	}
	//

	Terminate(EXIT_SUCCESS);
	LOG_DEBUG("End programm successfuly");
	//
	return 0;
}

Int64 ★★★
() автор топика
Ответ на: комментарий от kravich

странно, а какие опции при компиляции использовал?

Int64 ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.