Hi!
When i create two windows, the second window not responding:
#include <iostream>
#include "SFML/Window.hpp"
#include "SFML/OpenGL.hpp"
using namespace std;
// http://www.sfml-dev.org/tutorials/2.0/window-opengl.php
void SetWindow(sf::Window &window, int x, int y, int w, int h)
{
// cambia la posicion de la ventana
window.setPosition(sf::Vector2i(x,y));
window.setSize(sf::Vector2u(w,h));
window.setTitle("SFML window");
sf::WindowHandle handle = window.getSystemHandle();
window.setFramerateLimit(30);
}
sf::ContextSettings SetGLWindow()
{
sf::ContextSettings settings;
settings.depthBits = 24;
settings.stencilBits = 8;
settings.antialiasingLevel = 4;
settings.majorVersion = 3;
settings.minorVersion = 0;
return settings;
}
void renderingThread(sf::Window* window)
{
// activa el contexto de ventana
window->setActive(true);
// el bucle de renderizado
while(window->isOpen())
{
// draw...
// Limpiamos los buffers
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// termina el actual frame ( internamente intercambia el front y back buffer)
window->display();
}
}
int main()
{
sf::Window window1(sf::VideoMode(800,600), "Window1",sf::Style::Default, SetGLWindow());
sf::Window window2(sf::VideoMode(512,512), "Window2",sf::Style::Default, SetGLWindow());
// Configuramos la ventana
SetWindow(window1,10,50,800,600);
SetWindow(window2,100,50,512,512);
// desactivamos el OpenGL context
window1.setActive(false);
window2.setActive(false);
// Iniciamos el RenderingThreading
sf::Thread renderthreadWindow1(&renderingThread, &window1);
renderthreadWindow1.launch();
sf::Thread renderthreadWindow2(&renderingThread, &window2);
renderthreadWindow2.launch();
// corre el programa mientras la ventana este abierta
while(window1.isOpen())
{
// Comprueba todos los eventos de ventana que fueron activados durante la ultima iteracion del bucle
sf::Event event;
while(window1.pollEvent(event))
{
// evento de "peticion de cerrado": cerramos la ventana
if(event.type == sf::Event::Closed)
window1.close();
if(event.type == sf::Event::Resized)
glViewport(0,0,event.size.width, event.size.height);
}
}
while(window2.isOpen())
{
// Comprueba todos los eventos de ventana que fueron activados durante la ultima iteracion del bucle
sf::Event event;
while(window2.pollEvent(event))
{
// evento de "peticion de cerrado": cerramos la ventana
if(event.type == sf::Event::Closed)
window2.close();
if(event.type == sf::Event::Resized)
glViewport(0,0,event.size.width, event.size.height);
}
}
return 0;
}