如何获取 GLFW 窗口 ID?

How to get GLFW Window Id?

本文关键字:GLFW 窗口 ID 获取 何获取      更新时间:2023-10-16

我希望在glfw窗口上渲染gstreamer视频流。根据gstreamer覆盖设计,如果你给相关的winId,它将呈现它。像Qt的例子:

QWidget window;
window.resize(320, 240);
window.show();
WId xwinid = window.winId();
gst_video_overlay_set_window_handle (GST_VIDEO_OVERLAY (sink), xwinid);

但是我找不到GLFW的winId。

GLFWwindow* window = glfwCreateWindow(...);

它有一个窗口结构类型,但仅此而已。有没有办法获取它的 Id,或者我应该遵循另一种方式进行 glfw?

谢谢。

对于 GLFW 3,只需查看文档,它应该会给您答案,但这不是跨平台的,并且可能如文档所述有风险:

通过使用本机访问函数,您可以断言您知道自己在做什么以及如何解决因使用它们而导致的问题。如果你不这样做,你不应该使用它们

对于 Windows,如果需要窗口的 Win32 句柄:

1( 定义GLFW_EXPOSE_NATIVE_WIN32

2( 包括 glfw3native.h

3( 使用HWND glfwGetWin32Window (GLFWwindow *window)

你也可以找到 X11 和 Cocoa 的等价物......

编辑: 对于 X11,如果需要 Window 对象:

1( 定义GLFW_EXPOSE_NATIVE_X11

2( 包括 glfw3native.h

3( 使用Window glfwGetX11Window (GLFWwindow *window)