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)。
您是否使用Ubuntu打包的版本或GLFW Subversion存储库中的某个版本?由于删除了自定义的视觉选择,Subversion repo中的GLXFBConfig选择被打破了很长一段时间,因此您可能收到了错误的代码。
如果是这样的话,您应该恢复到与Ubuntu捆绑在一起的版本,或从Subversion拉新树。
感谢您花时间发布建议。我从http://glfw.sourceforge.net/download.html下载了它,忘记了Ubuntu已经为它安装了软件包(虽然当时未安装)。目前我已经通过Ubuntu的“物理”安装解决了这个问题。不过,我会尝试删除GLFW安装脚本复制到虚拟硬盘上的内容,并使用Ubuntu内置的GLFW软件包支持来查看是否有效。 – 2009-11-06 23:58:18
我认为从网站下载的内容与Ubuntu中的包相同。 – elmindreda 2009-11-11 04:17:40
嘿,我一直在遭受同样的问题。
最后我想出了如何解决这个问题。 我正在使用“make x11-install”来安装库。 (不是必要的)
运行 “让X11-干净”
-
,用vim或者其他编辑器GLFW/lib目录编辑Makefile.x11.in:
的过程将是如下/ x11文件夹(和Makefile。X11如果你不运行过程中1),改变从前缀 “在/ usr/local” 在 “/用户”
运行 “让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,这返回了预期的各种模式。
您是否检查了文档以备份关于位深度的事实?因为它明确指出0 =>默认深度。我最初使用每通道8位,然后切换到0,看看GLFW是否可以确定更好的设置。不过,我会研究libglfw-dev和librandr。 – 2009-10-23 07:58:04
这很奇怪,我确定0是一个无效值。我会把它留在这里,以便您的评论有意义。你确实是对的。 – LiraNuna 2009-10-23 09:20:43
我试过16位(5,6,5)和其他组合。我认为这可能是虚拟化的问题,所以我会看看Mesa。 – 2009-10-24 14:41:18