Я использую OpenGL с cygwin в течение нескольких месяцев для программирования некоторых 3D-приложений. Теперь я хочу попытаться написать несколько более продвинутых методов, используя такие вещи, как объекты буфера вершин. Однако я заметил, что столкнулся с препятствием: когда я использую glGetString(GL_VERSION)
в своей программе, она выдает 1.4.
Я компилирую свою программу с этими флагами: -lGL -lglut -lGLU -lGLEW
и включаю следующие заголовки: freeglut.h glew.h
. Я решил связать библиотеки X11 с библиотеками Windows, как описано здесь. Мои текущие программы OpenGL создаются и могут работать (поскольку до сих пор я использовал более старые функции - до OpenGL 1.4).
У меня новый настольный компьютер с графической картой ATI FirePro V4800 (FireGL), поддерживающей OpenGL до 4.1. Я установил последние версии драйверов, и они проходят тесты, предоставленные программой: OpenGL Extensions Viewer. Кроме того, программа показывает, что для моей видеокарты доступны все расширения до 4.1 включительно.
Здесь под последним ответом есть краткое упоминание о том, что cygwin может захотеть использовать старые dll (те, которые не поддерживают шейдеры и т. д.). Это проблема cygwin? Будет ли cygwin просто не распознавать мои последние версии драйверов и предлагать мне классные вещи в OpenGL 4.1? Или я не ссылаюсь на правильные библиотеки?
ОБНОВЛЕНИЕ
Узнав, как работает Cygwin X Server, я решил, что должен переключиться на собственные библиотеки Windows от freeglut. Я взял предварительно скомпилированные двоичные файлы, найденные здесь, и поместил файлы в соответствующие каталоги, чтобы связать их. После перекомпиляции я могу использовать все возможности OpenGL, насколько позволяет моя видеокарта (4.1).