【问题标题】:How to show GTK+ dialog in front of OpenGL如何在 OpenGL 前显示 GTK+ 对话框
【发布时间】:2014-12-18 19:31:14
【问题描述】:

我一直致力于创建一个简单的cross-platform message box / dialog library。我决定这样做,因为我目前正在使用 GLFW 进行窗口化,不幸的是它不提供对话框创建支持。

就对话创建本身而言,我的库运行良好。但是,当我在 Linux 上将它与 GLFW 一起使用时,我遇到了一些订购问题。对话框(模态的)将出现在我的 GLFW 窗口框架的顶部,但我的 GLFW 窗口的实际内容(使用 OpenGL 绘制)绘制在对话框的前面,如下所示:

我的 Linux 实现如下所示:

#include <boxer/boxer.h>
#include <gtk/gtk.h>

namespace boxer {

void show(const char *message, const char *title) {
  gtk_init(0, NULL);

  GtkWidget *dialog = gtk_message_dialog_new(NULL,
            GTK_DIALOG_MODAL,
            GTK_MESSAGE_INFO,
            GTK_BUTTONS_OK,
            "%s",
            message);
  gtk_window_set_title(GTK_WINDOW(dialog), title);
  gtk_dialog_run(GTK_DIALOG(dialog));

  gtk_widget_destroy(GTK_WIDGET(dialog));
  while (g_main_context_iteration(NULL, false));
}

} // namespace boxer

是否可以强制将 GTK+ 对话框绘制在我的 GLFW 窗口内容的前面?

【问题讨论】:

    标签: opengl dialog modal-dialog gtk glfw


    【解决方案1】:

    我正在使用虚拟机来测试在 Linux 上创建对话框 - 事实证明,某些虚拟机设置导致 OpenGL 的行为有点奇怪。修改虚拟机设置解决了这个问题。

    具体来说,我在 OS X 上的 VirtualBox 中运行 Ubuntu 12.04,我必须禁用 3D 加速才能解决问题。

    【讨论】:

    • 您使用的是哪个虚拟机,您是如何解决问题的?
    • 对不起,含糊不清,我已经更新了我的答案更具体。
    • 谢谢!我一直在寻找一种方法来修补 VirtualBox 以使 OpenGL 在加速的情况下正常工作,我瞬间希望你能找到一个。
    猜你喜欢
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    相关资源
    最近更新 更多