无法创建GLFW窗口
Failing to create GLFW window
我想创建一个共享GLFW窗口,但GLFW无法创建第二个窗口。
我可以创建一个窗口,但不能创建两个窗口
这是我的密码。
我想在另一个线程中使用第二个窗口,这样我就可以共享它们的上下文。
#include "pch.h"
#include <iostream>
#include <glglew.h>
#include <glfw3.h>
int SCR_WIDTH = 1920;
int SCR_HEIGHT = 1080;
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
// --------------------
GLFWwindow* sharedWindow = NULL;
GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", 0, sharedWindow);
if (window == NULL)
{
std::cout << "Failed to create the first GLFW window" << std::endl;
glfwTerminate();
return -1;
}
if (sharedWindow == NULL)
{
std::cout << "Failed to create the second GLFW window" << std::endl;
// glfwTerminate();
// return -1;
}
while (true)
{
}
std::cout << "Hello World!n";
}
share
是一个输入参数。参见glfwCreateWindow
创建第一个窗口,并为第二个窗口第二次调用glfwCreateWindow
:
GLFWwindow* wnd = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", 0, nullptr);
GLFWwindow* wnd2 = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "window 2", 0, window);
该窗口甚至可以在单独的线程中创建,但请注意,在创建第二个窗口时,必须确保第一个窗口的OpenGL上下文不是当前的。
#include <thread>
#include <mutex>
#include <condition_variable>
GLFWwindow *wnd = nullptr;
bool wnd2created = false;
std::mutex mtx;
std::condition_variable cv;
void wnd2func( void )
{
GLFWwindow *wnd2 = glfwCreateWindow( 800, 600, "window 2", nullptr, wnd );
{
std::unique_lock<std::mutex> lck(mtx);
wnd2created = true;
cv.notify_one();
}
if (wnd2 == nullptr)
return;
glfwMakeContextCurrent(wnd2);
// [...]
}
int main()
{
// [...]
wnd = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", 0, nullptr);
if (wnd == nullptr)
return -1;
std::thread wnd2thread(wnd2func);
{
std::unique_lock<std::mutex> lck(mtx);
cv.wait(lck, []() -> bool { return wnd2created; });
}
glfwMakeContextCurrent(wnd);
// [...]
}
相关文章:
- 如何获取 GLFW 窗口 ID?
- 在 GLFW 窗口中显示 FFMPEG 解码帧
- glfw 在创建之前/创建时实例化窗口位置
- 编译GLFW源窗口
- 无法在 GLFW 窗口标题中显示'ä'
- 为什么在GLFW窗口中没有用这个代码在我的屏幕上绘制立方体
- 在多个函数中使用全局glfw窗口
- 无法创建GLFW窗口
- 鼠标离开 GLFW窗口后触发 GLFW 鼠标回调?
- 如何在 GLFW 窗口中以固定的 FPS 渲染?
- 当焦点丢失时,全屏GLFW窗口消失了
- 如何在窗口外绘制图形(OpenGL GLFW)
- 使用 OpenGL 窗口(如 GLFW)或周围的窗口(如 GTK 或 SDL)是否存在性能差异?
- 窗口不关闭GLFW
- GLFW 不会检测到 GLFW 窗口外的鼠标移动
- GLFW 获取密钥"esc"并关闭窗口
- 如何设置GLFW窗口的(0,0)坐标位置
- GLFW窗口glfwSwapBuffers()真的很慢吗
- 如何在GLFW窗口中限制每秒帧数?(使用亲爱的ImGui)
- OpenGL使用glfw通过HIDDEN窗口进行屏幕外渲染和读取像素值