我希望在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遵循另一种方法?
谢谢。
答案 0 :(得分:1)
对于GLFW 3,只需看一下文档,它应该会给您answer,但这不是跨平台的,并且可能会像文档所说的那样冒险:
通过使用本机访问功能,您可以断言自己知道自己在做什么以及如何解决由于使用它们而导致的问题。如果不这样做,就不应该使用它们:
对于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)