4

在 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工作正常,甚至 > 300 FPS
  • 使用构建 GLFWmake-x11
  • 生成文件命令行:

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

  • 马克关于C - GLFW 窗口在 Debian 上无法打开的提示似乎并没有缓解这种情况

编辑:

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

4

4 回答 4

2

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

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

于 2009-11-04T01:47:52.410 回答
1

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

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

程序如下:

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

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

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

我没有尝试过它的“dist-install”是否重要或位置,但它非常适合我。

于 2012-06-11T05:22:04.227 回答
0

I had this same problem with GLFW 2.7.7, pulled as a .tar.bz2 directly from the GLFW website. glfwOpenWindow always returned false, even with no hints and no bit depths specified.

I was building libglfw myself, and loading it from the working directory using the rpath link flag. I did not have the Ubuntu libglfw installed.

Using the Ubuntu repository version (sudo apt-get install libglfw-dev), the window opens as expected.

One of the significant differences between the two library versions is the result of calling glfwGetVideoModes. On the broken GLFW 2.7.7, this returned only the desktop resolution and depth. On the working version, Ubuntu package 2.7.2-1, this returned the expected variety of modes.

于 2013-02-08T19:50:16.503 回答
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)。

于 2009-10-22T23:01:45.293 回答