在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;
}
其他值得注意的事实是:
glxgears
工作正常,甚至&gt; 300 FPS make-x11
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()
或调试日志文件?
答案 0 :(得分:2)
您使用的是Ubuntu中打包的版本还是GLFW Subversion存储库中的某个版本?由于删除了自定义的Visual选择,Subversion仓库中的GLXFBConfig选择被破坏了很长一段时间,因此您可能收到了错误的代码。
如果是这种情况,你应该恢复到与Ubuntu捆绑在一起的版本,或从Subversion中提取一棵新树。
答案 1 :(得分:1)
嘿,我一直在遭受同样的问题。
最后我想出了如何解决这个问题。 我正在使用“make x11-install”来安装库。
程序如下:
运行“make x11-clean”(不是必需的)
使用vim或其他编辑器在glfw / lib / x11文件夹中编辑Makefile.x11.in(如果不运行进程1,则使用Makefile.x11),从“/ usr / local”更改PREFIX到“/ user”
运行“make x11-dist-install”进行安装
我没有尝试过它的“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,这返回了预期的各种模式。