2009-10-22 139 views
4

在編制和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()或調試日誌文件?

回答

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)。

+2

您是否檢查了文檔以備份關於位深度的事實?因爲它明確指出0 =>默認深度。我最初使用每通道8位,然後切換到0,看看GLFW是否可以確定更好的設置。不過,我會研究libglfw-dev和librandr。 – 2009-10-23 07:58:04

+0

這很奇怪,我確定0是一個無效值。我會把它留在這裏,以便您的評論有意義。你確實是對的。 – LiraNuna 2009-10-23 09:20:43

+0

我試過16位(5,6,5)和其他組合。我認爲這可能是虛擬化的問題,所以我會看看Mesa。 – 2009-10-24 14:41:18

2

您是否使用Ubuntu打包的版本或GLFW Subversion存儲庫中的某個版本?由於刪除了自定義的視覺選擇,Subversion repo中的GLXFBConfig選擇被打破了很長一段時間,因此您可能收到了錯誤的代碼。

如果是這樣的話,您應該恢復到與Ubuntu捆綁在一起的版本,或從Subversion拉新樹。

+0

感謝您花時間發佈建議。我從http://glfw.sourceforge.net/download.html下載了它,忘記了Ubuntu已經爲它安裝了軟件包(雖然當時未安裝)。目前我已經通過Ubuntu的「物理」安裝解決了這個問題。不過,我會嘗試刪除GLFW安裝腳本複製到虛擬硬盤上的內容,並使用Ubuntu內置的GLFW軟件包支持來查看是否有效。 – 2009-11-06 23:58:18

+0

我認爲從網站下載的內容與Ubuntu中的包相同。 – elmindreda 2009-11-11 04:17:40

1

嘿,我一直在遭受同樣的問題。

最後我想出瞭如何解決這個問題。 我正在使用「make x11-install」來安裝庫。 (不是必要的)

  1. 運行 「讓X11-乾淨」

  2. ,用vim或者其他編輯器GLFW/lib目錄編輯Makefile.x11.in:

    的過程將是如下/ x11文件夾(和Makefile。X11如果你不運行過程中1),改變從前綴 「在/ usr/local」 在 「/用戶」

  3. 運行 「讓X11-dist的安裝」,安裝

我沒有嘗試過,如果它的「dist-install」重要或位置,但它對我完美的作品。

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,這返回了預期的各種模式。