C GLFW窗口无法打开(Ubuntu)
在Ubuntu(9.04)下编译和运行我的基于GLFW的C程序时,它在试图打开窗口时失败(安装了最新的GLFW后,它编译得很好)。我尝试了不同的分辨率,低至300x300,并将位深度保留为零,希望默认值会流行 相关的代码读取(根据示例文件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
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,成功安装了来宾添加
工作正常,甚至超过300 FPSglxgears
- 使用
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安装”来安装库 程序如下:
我还没有试过它的“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
);