Невозможно создать два окна GLFW одновременно - PullRequest
0 голосов
/ 01 ноября 2019

Я хочу поделиться контекстом главного окна GLFW в другом потоке, поэтому я пытаюсь поделиться контекстом главного окна.

#include <gl\glew.h>
#include <glfw3.h>
#include <thread>


int SCR_WIDTH = 800;
int SCR_HEIGHT = 600;


GLFWwindow *wnd = nullptr;

void wnd2(void)
{
  GLFWwindow *wnd2 = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "window 2", nullptr, wnd);
  if (wnd2 == nullptr)
  {
    std::cout << "New window Not created";
    return;
  }
  else
    std::cout << "New window created";

  glfwMakeContextCurrent(wnd2);

// if i create a new window
//GLFWwindow* offscreen_context = glfwCreateWindow(800, 600, "", NULL, NULL);
//than i am able to create a new window
}

int main()
{
  glfwInit();
  glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
  glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
  glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);


  // glfw window creation
  // --------------------
  wnd = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", nullptr, nullptr);

  if (wnd == nullptr)
  {
    std::cout << "window not created" << std::endl;
    return -1;
  }
  glfwMakeContextCurrent(0); // have to disable the first to create the second window
  std::thread wnd2thread(wnd2);

      // Even if i try to set the main window context than also the secondary window is not created
  //glfwMakeContextCurrent(wnd);
  if (wnd == NULL)
  {
    std::cout << "Failed to create the first  GLFW window" << std::endl;
    glfwTerminate();
    return -1;
  }

  while (true)
  {

  }
    std::cout << "Hello World!\n"; 
}

Проблема, с которой я сталкиваюсь, заключается в том, что я могу создать только одно окнотолько.

Мне нужно отключить главное окно, чтобы создать другое окно в потоке.

...