GLFW窗口无法打开(Ubuntu)

时间:2009-10-22 22:51:31

标签: c opengl ubuntu glfw

在Ubuntu(9.04)下编译和运行基于GLFW的C程序时,它在尝试打开窗口时失败(编译好了,安装了最新的GLFW)。我尝试了不同的分辨率,低至300x300,并将位深度保留为零,希望默认值能够接受。

相关的代码段读取(根据示例文件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;
}

其他值得注意的事实是:

  • 在VirtualBox 3.0.2中运行Ubuntu,配置512 MB RAM,启用3D加速,64 MB VRAM,成功安装Guest Additions
  • glxgears工作正常,甚至&gt; 300 FPS
  • 使用make-x11
  • 构建了GLFW
  • makefile命令行:

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

  • Mark C - GLFW window doesn't open on Debian上的提示似乎无法缓解情况

编辑:

有没有办法提取更奇特的错误消息?任何getLastErrorDesc()或调试日志文件?

4 个答案:

答案 0 :(得分:2)

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

如果是这种情况,你应该恢复到与Ubuntu捆绑在一起的版本,或从Subversion中提取一棵新树。

答案 1 :(得分:1)

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

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

程序如下:

  1. 运行“make x11-clean”(不是必需的)

  2. 使用vim或其他编辑器在glfw / lib / x11文件夹中编辑Makefile.x11.in(如果不运行进程1,则使用Makefile.x11),从“/ usr / local”更改PREFIX到“/ user”

  3. 运行“make x11-dist-install”进行安装

  4. 我没有尝试过它的“dist-install”重要或位置,但它对我来说非常有用。

答案 2 :(得分:0)

你正试图用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)。

答案 3 :(得分:0)

我在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,这返回了预期的各种模式。