Nvidia OpenGL Configuration

Загрузка пакетов программ

Прежде всего драйверы OpenGL для видеокарт Nvidia требуют систему с ядром 2.2.12 или выше. Если вы не имеете его, тогда обновите вашу систему, а это уже тема другого HOWTO! Но, первый шаг должен быть сделан - это загрузка нового ядра с сайта:

http://www.kernel.org/

Также требуется XFree86 4.0 или выше, предпочтительнее 4.01. Его инсталляция будет описана позже.

Пакеты программ.

XFree86 4.0.1.

XFree86 содержится в трех файлах:

X401src-1.tgz

X401src-2.tgz

X401src-3.tgz

doctools-1.2.tgz

Doctools используется для подготовки X документации.

ftp://ftp.xfree86.org/

Включает glX, интерфейс для OpenGL X. Каждая графическая оконная система (MS Windows, X и т.п.) предоставляет платформенно-определенный интерфейс между OpenGL и системой, чтобы обеспечивать отображение GL контекста в окнах.

Страницы руководства OpenGL.

XFree86 идет только со страницами руководства glX. Если вы хотите полностью установить страницы руководства OpenGL, вы должны получить их сами.

mangl.tar.Z

manglx.tar.Z

manglu.tar.Z

ftp://sgigate.sgi.com:~ftp/pub/opengl/doc/

Эти страницы руководства представлены в формате, готовом для распаковки в каталог XFree86, см. ниже.

Mesa 3.3.

MesaLib-3.3.tar.gz

http://mesa3d.sourceforge.net/

Обеспечивает libGLU (GL Utility). GLU - библиотека предоставляет высокоуровневые функции для приложений. libGL.so - непосредственно OpenGL, является низкоуровневой библиотекой. Большинство приложений используют высокоуровневые библиотеки, подобные GLU.

Если у вас уже есть XFree86 4, необходимо установить библиотеку Mesa. GLU - стандартная часть большинства установок OpenGL и, как ожидается, она будет присутствовать в большинстве программ.

GLUT

glut-3.7.tar.gz

http://reality.sgi.com/mjk/glut3/

Glut обеспечивает графическую систему независимым интерфейсом между OpenGL и любой поддерживаемой графической системой. Например, в X Window скрываются подробности использования функций glX, при создании окна. Программисты могут один раз написать код и скомпилировать его для работы в MS Windows или X и т.п., при условии, что библиотека GLUT доступна на данной платформе.

Подобно GLU, GLUT - стандартная часть большинства установок OpenGL. Большинство примеров программ и даже некоторые приложения, сделаны с использованием libglut. Например, Руководство по программированию OpenGL (red book) использует Glut для своих примеров.

Вам нужно установить GLU и GLUT, если вы хотите иметь возможность компилировать большинство программ, которые можно свободно загрузить (исходный код). Некоторым программам могут даже быть необходимы эти библиотеки, если они связаны с ними динамически.

Qt

qt-x11-2.1.0.tar.gz или более новая версия

http://www.troll.no/

Qt - кросс-платформенная библиотека для создания GUI, которая позволяет легко создавать X приложения со стандартными элементами графического интерфейса (widget) - меню, полосы прокрутки, списки, флажки, кнопки, окна с MDI интерфесом и многие другие графические элементы. Используя Qt, программа может компилироваться в MS Windows и в X, без изменения кода. Это очень популярная GUI библиотека, и она использована для создания основных библиотек KDE (http://www.kde.org/).

Qt имеет расширение (qt/ententions/opengl) для OpenGL, которое обеспечивает создание OpenGL контекста в программах, написаных с помощью Qt. Она обеспечивает некоторую альтернативу GLUT и использует функции glX напрямую, плюс, добавляет полный доступ к qt элементам и кросс-платформенную переносимость.

Она полезна, если вы хотите компилировать или разрабатывать программы, основанные на Qt.

Драйверы NVIDIA.

NVIDIA_kernel-0.9-4.tar.gz

NVIDIA_GLX-0.9-4.xfree401.tar.gz

http://www.nvidia.com/

Ядро должно быть по адресу: /lib/modules/2.2.16/video/NVdriver, а файлы libGL.so и libGLcore.so в каталоге /usr/lib/ и библиотека Mesa должна находится там же. libGL.so - OpenGL. Эти файлы являются средствами nvidia для аппаратного ускорения OpenGL.

XFree86 4.0.1, кажется, содержит ядро Mesa 3.3, однако в нем отсутствуют некоторые файлы libGLU*, которые требуют многие программы.

Установка XFree86

Если у вас уже есть установленная версия XFree86, вы можете переместить ее или удалить:

          cd /usr
mv X11R6 X11R6-old
cd /etc
mv X11 X11-old

Если это расположение неправильно для вашего дистрибутива Linux, вы должны их найти - попробуйте посмотреть в /var

  cd /usr/src
mkdir release
cd release
tar -xvzf X401src-1.tgz
tar -xvzf X401src-2.tgz
tar -xvzf X401src-3.tgz
tar -xvzf doctools-1.2.tar.gz

  -- распаковка страниц руководства (фактически, glx страницы уже есть)
tar -xvzf mangl.tar.Z
tar -xvzf manglx.tar.Z
tar -xvzf manglu.tar.Z

Файл должен быть отредактирован, чтобы позволить установить эти страницы руководства с остальной частью дистрибутива:

  cd xc/doc/man/GL
Редактируйте файл: Imakefile
SUBDIRS = glx gl glu

Когда вы распакуете файлы man*.tar.Z (см. выше), будут добавлены два новых каталога: gl и glu.

  cd /usr/src/release
cd doctools-1.2
make
make install
cd ..
cd xc
make World
-- перед установкой убедитесь, что вы переместили или удалили прежнюю установку X
make install
make install.man

Когда X установлен и выполняется (позже), попробуйте использовать программу xman, чтобы просмотреть руководства gl,glx,glu и glut из секции 3.

Установка Mesa

Примечание: Она дает вам файлы libGLU*, которые отсутствуют в XFree86. Полностью деинсталлируйте все библиотеки Mesa, которые могут идти со Slackware:

          removepkg mesa

Процедуры установки различаются для разных дистрибутивов. Если нет никакого способа начисто удалить существующие библиотеки Mesa, тогда по крайней мере найдите, где они установлены: обычно в /usr или /usr/local. В примере ниже подразумевается, что библиотеки установлены в /usr. Установка над старой версией скорее всего безопасна. Ищите /usr/lib/libMesa* или /usr/local/lib/libMesa*

  cd /usr/src
tar -xvzf MesaLib-3.3.tar.gz
cd Mesa-3.3
./configure --prefix=/usr
make
make install

В этом месте, Mesa установила свою собственную версию подключаемого файла glx.h, заменив ту, которая была установлена с XFree86. Это вызовет проблемы с компиляцией некоторых программ, что можно исправить: скопируйте подключаемые файлы GL из каталога исходных текстов в каталог подключаемых файлов:

  cp /usr/src/release/xc/include/GL/*.h /usr/X11R6/include/GL

Установка драйверов Nvidia OpenGL

  -- удалите файлы libGL.*, которые идут с XFree86 / Mesa 3.3
-- файлы nvidia libGL.* должны заменить их
cd /usr/X11R6/lib
rm libGL.*
cd modules/extensions
rm libGL*
rm libglx*
cd /usr/lib
rm libGL.*

  cd /usr/src
tar -xvzf NVIDIA_kernel-0.9-4.tar.gz
tar -xvzf NVIDIA_GLX-0.9-4.xfree401.tar.gz
cd NVIDIA_kernel-0.9-4
make
cd ..
cd NVIDIA_GLX-0.9-4.1
make
cd

  -- создайте основной файл конфигурации X - xf86config
cd /etc/X11
Вы должны отредактировать XF86Config и записать следущие строки:
vi XF86Config
Load "dri"
driver "nvidia"
"1600x1200" (или ваше любимое разрешение)
скопируйте шрифты TrueType из каталога шрифтов Windows
и добавьте путь к этому каталогу

  -- примечание: /usr/include/GL - символическая ссылка для /usr/X11R6/include/GL

 

Определение "nvidia" для драйвера в XF86Config вступает в силу при каждом запуске startx. Но драйвер NVdriver должен загружаться при каждом запуске системы:

          insmod NVdriver

Вы можете разместить эту команду в одном из загрузочных файлов, например /etc/rc.d/rc.modules

Установка Qt

  cd /usr/local
tar -xvzf qt-x11-2.1.0.tar.gz
mv qt-2.1.0 qt
cd qt

Проверьте qt/configs/linux-g++-shared и убедитесь, что там нет ключей содержащих слово Mesa, например -lMesaGL -lMesaGLU должны быть -lGL -lGLU. Прочитайте файл INSTALL об установке переменных окружения.

  ./configure
make

  -- компиляция расширений opengl
cd extensions/opengl/src

  Проверьте Makefile и убедитесь, что там не содержится слов Mesa.

  make
ldconfig

  cd ../examples
Попробуйте собрать и запустить примеры.

Установка GLUT

Установка GLUT имеет некоторые хитрости. Я не очень знаком с программой imake, которая используется для управления файлами Makefile. И я не совсем понял, как установить GLUT, туда куда я хотел (/usr/lib). Во любом случае, это можно сделать вручную:

  cd /usr/src
tar -xvzf glut-3.7.tar.gz
cd glut-3.7

  ЧИТАЙТЕ файл: README.linux
cd linux
ЧИТАЙТЕ файл: README
cp Glut.cf ..
cd ..
Отредактируйте файл Glut.cf: удалите все ссылки на Mesa.
Если необходимо, то замените любые -lMesaGL -lMesaGLU на -lGL -lGLU.
В частности, замените:
OPENGL = $(TOP)/../lib/libMesaGL.so
GLU = $(TOP)/../lib/libMesaGLU.so
на:
OPENGL = -lGL
GLU = -lGLU

  ./mkmkfiles.imake
cd lib/glut
cp /usr/src/glut-3.7/linux/Makefile .
Отредактируйте файл Makefile: удалите все ссылки на Mesa.
Если необходимо, то замените любые -lMesaGL -lMesaGLU на -lGL -lGLU.
В частности замените:
OPENGL = $(TOP)/../lib/libMesaGL.so
GLU = $(TOP)/../lib/libMesaGLU.so
на:
OPENGL = -lGL
GLU = -lGLU

  make
ln -s libglut.so.3.7 libglut.so
ln -s libglut.so.3.7 libglut.so.3
cp -d libglut.* /usr/lib
cd ..
cd gle
-- соберите libgle, как общедоступную библиотеку
gcc -shared -o libgle.so.3.7 *.o
ln -s libgle.so.3.7 libgle.so
ln -s libgle.so.3.7 libgle.so.3
cp -d libgle.* /usr/lib
cd ..
cd mui
-- соберите libmui, как общедоступную библиотеку
gcc -shared -o libmui.so.3.7 *.o
ln -s libmui.so.3.7 libmui.so
ln -s libmui.so.3.7 libmui.so.3
cp -d libmui.* /usr/lib
cd ../man
make install.man
ldconfig

  cd ../progs/demos/ideas
make
./ideas
-- проверьте компиляцию примеров
-- смотрите, какие библиотеки должны быть использованы (-lX11 ...) в
-- файлах Makefile. Программа Qt tmake доступна на  www.troll.no,
-- это более быстрый способ сделать Makefile, но вам нужно будет отредактировать его
-- и добавить -l, если необходимо.