Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.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
C GLFW窗口无法打开(Ubuntu)_C_Opengl_Ubuntu_Glfw - Fatal编程技术网

C GLFW窗口无法打开(Ubuntu)

C GLFW窗口无法打开(Ubuntu),c,opengl,ubuntu,glfw,C,Opengl,Ubuntu,Glfw,在Ubuntu(9.04)下编译和运行我的基于GLFW的C程序时,它在试图打开窗口时失败(安装了最新的GLFW后,它编译得很好)。我尝试了不同的分辨率,低至300x300,并将位深度保留为零,希望默认值会流行 相关的代码读取(根据示例文件gears.c,直接从我的主文件顶部剪切): //文件:main.c #包括 #包括 #包括 #包括 #ifndef PI #定义PI 3.141592654 #恩迪夫 int main(int argc,char*argv[]) { //初始化GLFW: gl

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

相关的代码读取(根据示例文件
gears.c
,直接从我的主文件顶部剪切):

//文件:main.c
#包括
#包括
#包括
#包括
#ifndef PI
#定义PI 3.141592654
#恩迪夫
int main(int argc,char*argv[])
{
//初始化GLFW:
glfwInit();
如果(!glfwOpenWindow(300,300,0,0,0,0,0,GLFW_窗口))//Yo失败!
{
printf(“窗口打开失败。\n”);
glfwTerminate();
返回0;
}
glfwSetWindowTitle(“…”);
...
//清理:
glfwTerminate();
返回0;
}
其他值得注意的事实包括:

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

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

  • 马克的建议似乎并没有缓解这种情况

编辑:


有没有什么方法可以提取出更奇特的错误消息?任何
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)。

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


如果是这样的话,您应该恢复到与Ubuntu捆绑的版本,或者从Subversion中提取一个新的树。

嘿,我也遇到了同样的问题

最后我想出了解决这个问题的办法。 我使用“makex11安装”来安装库

程序如下:

  • 运行“使x11清洁”(无需)

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

  • 运行“make x11 dist install”进行安装


  • 我还没有试过它的“dist安装”是否重要,或者它的位置是否重要,但它对我来说非常适合。

    我在GLFW 2.7.7中遇到了同样的问题,它作为.tar.bz2直接从GLFW网站上拉出来
    glfwOpenWindow
    始终返回false,即使未指定任何提示和位深度

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

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


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

    您是否检查了文档以支持位深度方面的事实?因为它清楚地表明0=>默认深度。我最初每个通道使用8位,然后切换到0,看看GLFW是否可以确定更好的设置。不过,我会调查libglfw dev和librandr。这很奇怪,我确信0是一个无效值。我将把它留在这里,让你的评论有意义。你说得对。我试过16位(5,6,5)和其他组合。我认为这可能是虚拟化的一个问题,所以我来看看Mesa。感谢您花时间发布建议。我是从下载的,没有注意到Ubuntu已经有了它的软件包(尽管当时已经卸载了)。目前我已经通过Ubuntu的“物理”安装解决了这个问题。不过,我会尝试删除GLFW安装脚本复制到虚拟硬盘上的内容,并使用Ubuntu内置的GLFW软件包支持,看看是否有效。不过,我认为您从该网站下载的内容与Ubuntu中的软件包完全相同。
        glfwOpenWindow(
                       800, 600,   // Window size
                       8, 8, 8, 8, // bitdepth per channel (RGBA)
                       24,         // Z buffer bitdepth
                       0,          // Aux buffer bitdepth
                       GLFW_WINDOW // Window
                      );