Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何显示GTK+;OpenGL前面的对话框_Opengl_Dialog_Modal Dialog_Gtk_Glfw - Fatal编程技术网

如何显示GTK+;OpenGL前面的对话框

如何显示GTK+;OpenGL前面的对话框,opengl,dialog,modal-dialog,gtk,glfw,Opengl,Dialog,Modal Dialog,Gtk,Glfw,我一直在努力创建一个简单的。我决定这样做,因为我目前正在使用GLFW进行窗口处理,不幸的是,它不提供对话框创建支持 就对话框的创建而言,我的库工作得很好。然而,当我在Linux上与GLFW一起使用时,我在订购方面遇到了一些问题。对话框(模式)将出现在我的GLFW窗口的框架顶部,但我的GLFW窗口(使用OpenGL绘制)的实际内容将绘制在对话框前面,如下所示: 我的Linux实现如下所示: #include <boxer/boxer.h> #include <gtk/gtk.h

我一直在努力创建一个简单的。我决定这样做,因为我目前正在使用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_init(0,NULL);
GtkWidget*dialog=gtk_消息_对话框_新建(空,
GTK_对话框_模态,
GTK_消息_信息,
GTK_按钮_正常,
“%s”,
信息);
gtk_窗口_设置_标题(gtk_窗口(对话框),标题);
gtk_对话框运行(gtk_对话框(对话框));
gtk_小部件_销毁(gtk_小部件(对话框));
while(g_main_context_迭代(NULL,false));
}
}//名称空间盒

有没有可能强制在我的GLFW窗口的内容前绘制GTK+对话框?

我使用虚拟机测试Linux上对话框的创建-结果发现一些虚拟机设置导致OpenGL的行为有点奇怪。修补虚拟机设置修复了该问题


具体来说,我在OS X上的VirtualBox中运行Ubuntu 12.04,为了解决这个问题,我不得不禁用3D加速功能。

您使用的是哪台虚拟机,以及您是如何解决这个问题的?很抱歉,我已经更新了我的答案,使之更加具体。谢谢!我一直在寻找一种修补VirtualBox的方法,以使OpenGL在加速时正常工作,我有一个瞬间的希望,你已经找到了一个。