Окно GLFW не открывается (Ubuntu) - PullRequest
4 голосов
/ 23 октября 2009

При компиляции и запуске моей C-программы на основе GLFW под Ubuntu (9.04), происходит сбой при попытке открыть окно (оно прекрасно компилируется, установив последнюю версию 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;
}

Другие примечательные факты:

  • Запуск Ubuntu внутри VirtualBox 3.0.2, конфигурация с 512 МБ ОЗУ, ускорение 3D включено, VRAM 64 МБ, гостевые дополнения успешно установлены
  • glxgears работает нормально, даже> 300 кадров в секунду
  • построено GLFW с использованием make-x11
  • командная строка makefile:

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

  • Совет Марка по C - окно GLFW не открывается в Debian , похоже, не облегчает ситуацию

Edit:

Есть ли способ извлечь более причудливое сообщение об ошибке? Любые getLastErrorDesc() или файлы журнала отладки?

Ответы [ 4 ]

2 голосов
/ 04 ноября 2009

Используете ли вы версию, упакованную в Ubuntu, или какую-либо версию из хранилища GLFW Subversion? Выбор GLXFBConfig в репозитории Subversion довольно долго прерывался из-за удаления пользовательского визуального выбора, поэтому вы, возможно, получили неверный код.

Если это так, вы должны либо вернуться к версии, поставляемой в комплекте с Ubuntu, либо извлечь новое дерево из Subversion.

1 голос
/ 11 июня 2012

Эй, у меня та же проблема.

Наконец я понял, как решить эту проблему. Я использовал «make x11-install» для установки библиотеки.

Процедура будет следующей:

  1. запустить "make x11-clean" (необязательно)

  2. используйте vim или любой другой редактор для редактирования Makefile.x11.in в папке glfw / lib / x11 (и Makefile.x11, если вы не запускаете процесс 1), измените PREFIX с "/ usr / local" для "/ пользователя"

  3. запустить "make x11-dist-install" для установки

Я не пробовал, имеет ли значение его "dist-install" или местоположение, но он отлично работает для меня.

0 голосов
/ 08 февраля 2013

У меня была такая же проблема с 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 голосов
/ 23 октября 2009

Вы пытаетесь открыть окно с 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).

...