GLFW窗口无法打开(Ubuntu的)

问题描述:

在编制和Ubuntu下运行基于我GLFW-C程序(9.04),它试图在打开的窗口(它编译罚款,已经安装了最新的GLFW)失败。我尝试了各种分辨率,最低300x300,并将比特深度设置为零,希望默认值能够得到满足。GLFW窗口无法打开(Ubuntu的)

的代码中的相关部分读取(直接从我的主要文件的顶部剪断,基于示例文件gears.c):

// File: main.c 
#include <math.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <GL/glfw.h> 

#ifndef PI 
#define PI 3.141592654 
#endif 

int main(int argc, char* argv[]) 
{ 
    // Initialize GLFW: 
    glfwInit(); 

    if (!glfwOpenWindow(300, 300, 0, 0, 0, 0, 0, 0, GLFW_WINDOW)) // Yo failure! 
    { 
     printf("Window open failed.\n"); 
     glfwTerminate(); 
     return 0; 
    } 

    glfwSetWindowTitle("..."); 

    ... 

    // Clean up: 
    glfwTerminate(); 

    return 0; 
} 

其他值得关注的事实是:

  • 运行Ubuntu里面VirtualBox的3.0.2,config'd W/512 MB RAM,启用3D加速,64 MB VRAM,客户添置安装成功
  • glxgears正常工作,甚至> 300 FPS
  • 内置GLFW使用make-x11
  • 生成文件的命令行:

    gcc `pkg-config --cflags libglfw` main.c -o program `pkg-config --libs libglfw` -lglfw -lGLU -lGL -lm

  • 马克在C - GLFW window doesn't open on Debian提示似乎并没有缓解的情况下

编辑:

是否有任何方式来提取更加奇特的错误信息?任何getLastErrorDesc()或调试日志文件?

您正在尝试打开与0bpp一个窗口,当然,这是要失败的:)

试试这个:

glfwOpenWindow(
        800, 600, // Window size 
        8, 8, 8, 8, // bitdepth per channel (RGBA) 
        24,   // Z buffer bitdepth 
        0,   // Aux buffer bitdepth 
        GLFW_WINDOW // Window 
       ); 

此外,在最新的Ubuntu,实际上是一个名为libglfw-dev软件包你可以安装,以防万一你忘记链接任何额外的库(如librandr)。

+2

您是否检查了文档以备份关于位深度的事实?因为它明确指出0 =>默认深度。我最初使用每通道8位,然后切换到0,看看GLFW是否可以确定更好的设置。不过,我会研究libglfw-dev和librandr。 – 2009-10-23 07:58:04

+0

这很奇怪,我确定0是一个无效值。我会把它留在这里,以便您的评论有意义。你确实是对的。 – LiraNuna 2009-10-23 09:20:43

+0

我试过16位(5,6,5)和其他组合。我认为这可能是虚拟化的问题,所以我会看看Mesa。 – 2009-10-24 14:41:18

您是否使用Ubuntu打包的版本或GLFW Subversion存储库中的某个版本?由于删除了自定义的视觉选择,Subversion repo中的GLXFBConfig选择被打破了很长一段时间,因此您可能收到了错误的代码。

如果是这样的话,您应该恢复到与Ubuntu捆绑在一起的版本,或从Subversion拉新树。

+0

感谢您花时间发布建议。我从http://glfw.sourceforge.net/download.html下载了它,忘记了Ubuntu已经为它安装了软件包(虽然当时未安装)。目前我已经通过Ubuntu的“物理”安装解决了这个问题。不过,我会尝试删除GLFW安装脚本复制到虚拟硬盘上的内容,并使用Ubuntu内置的GLFW软件包支持来查看是否有效。 – 2009-11-06 23:58:18

+0

我认为从网站下载的内容与Ubuntu中的包相同。 – elmindreda 2009-11-11 04:17:40

嘿,我一直在遭受同样的问题。

最后我想出了如何解决这个问题。 我正在使用“make x11-install”来安装库。 (不是必要的)

  1. 运行 “让X11-干净”

  2. ,用vim或者其他编辑器GLFW/lib目录编辑Makefile.x11.in:

    的过程将是如下/ x11文件夹(和Makefile。X11如果你不运行过程中1),改变从前缀 “在/ usr/local” 在 “/用户”

  3. 运行 “让X11-dist的安装”,安装

我没有尝试过,如果它的“dist-install”重要或位置,但它对我完美的作品。

我和GLFW 2.7.7有同样的问题,直接从GLFW网站以.tar.bz2的形式提取。 glfwOpenWindow总是返回false,即使没有提示,也没有指定位深度。

我正在自己构建libglfw,并使用rpath链接标志从工作目录加载它。我没有安装Ubuntu libglfw。

使用Ubuntu存储库版本(sudo apt-get install libglfw-dev),窗口按预期打开。

这两个库版本之间的显着差异之一是调用glfwGetVideoModes的结果。在破损的GLFW 2.7.7上,这只返回桌面分辨率和深度。在工作版本,Ubuntu包2.7.2-1,这返回了预期的各种模式。