-
- GLFWwindow *window[2];
- // window1を作成する
- window[0] = glfwCreateWindow(800, 600, "window1", NULL, NULL);
- /*
- * この辺りでテクスチャを作ったりVAO/VBOを設定します
- */
- // window2を作成する
- window[1] = glfwCreateWindow(800, 600, "window2", NULL, window[0]);
-
GLFWを使用して別のウィンドウにテクスチャを共有する場合、「glfwCreateWindow」関数の第5引数に共有したいウィンドウのハンドルを渡してあげれば良いです。
このテクスチャは本当にテクスチャの共有だけを行います。つまり、それぞれのウィンドウごとに共有したテクスチャを使用することが出来るのです。
ということは、必要なテクスチャが一枚だけで良いのなら、ここで共有を行う設定後にテクスチャを一枚だけ生成すれば良いのです。簡単ですねー。
テクスチャを1枚だけ使用するということは、それだけCPUからGPUへ転送するデータ量も減ります。その分、フレームレートなどの性能が低下することを防ぐことに繋がります。
ここでは、コードを抜粋していますが、より正確なサンプルとしてglfwリポジトリに「sharing.c」という公式サンプルコードが存在しています。
こちらを参考にコードを書いてみると理解がより進むと思います。
github glfw examples LINK