2. Download the software packages

2.1. Linux Kernel >= 2.2.12 Required

First of all, the OpenGL drivers for the Nvidia cards currently require a system with Linux kernel 2.2.12 or later. Release versions of kernel 2.4.x are supported. If you don't have it, then you will have to upgrade your system's Linux kernel; see The Linux Kernel HOWTO for details.

The Linux kernel can be downloaded at: http://www.kernel.org/

2.2. XFree86 4.0 or later

XFree86 4.0 or later, preferably 4.0.2 as of this writing, is also required. Its installation will be covered later.

XFree86 source code comes in three files:

Doctools is something it uses to prepare the X documentation. Binary distributions of XFree86 are available for many platforms and can be used instead of compiling the sources. This howto talks about compiling the source.

ftp://ftp.xfree86.org/

XFree86 includes GLX, the OpenGL X interface functions. Each window system has to provide the platform-specific interfaces between OpenGL and the window system for mapping a GL rendering context to a window system widget.

2.3. OpenGL man pages

XFree86 comes with only the GLX man pages. If you want a full set of OpenGL man pages, you have to get them yourself.

ftp://ftp.sgi.com/sgi/opengl/doc/

These man pages are in a format ready to be unpacked into the XFree86 source distributions, see below.

2.4. Mesa 3D

http://mesa3d.sourceforge.net/

Mesa is the library that provides the foundation for the 3D support included in XFree86, which comes only with the libGL OpenGL core library component. Mesa is a software renderer. To enable hardware accelerated performance, many 3D hardware manufacturers provide a drop-in replacement for Mesa's standard software-only libGL rendering library. For this document, we are only interested in NVIDIA's libGL drop-in replacement library.

MesaLib provides a software OpenGL implementation consisting of libGL. It also provides libGLU (GL Utility). libGLU is a library built on top of libGL to provide some higher-level functions for applications. OpenGL itself, libGL, is considered a low-level library. GLU is a standard part of most OpenGL installations and many programs make use of it.

MesaDemos provides many OpenGL demo programs and, more importantly, the GL Utility Toolkit (libglut) library. GLUT provides a window system independent interface between OpenGL and any supported window system. For instance, on the X Window System, it hides the details of using glX functions to setup a window. Programmers can write code once and can compile it to work on MS Windows or X, etc provided that a GLUT library is available on the target platform. Like libGLU, libglut is a standard part of most OpenGL installations and is required by many programs even though it is not packaged with XFree86.

While GLUT is bundled with MesaDemos, it is also available as a separate package from its original project website:

glut-3.7.tar.gz glut_data-3.7.tar.gz

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

You may use either the GLUT included with MesaDemos (preferred and easier) or the GLUT from its project website. Don't install both! It's recommended at this time to go with the GLUT packaged with MesaDemos, but instructions on how to install the other GLUT are still provided in the next section as an option. Note that MesaDemos does not include the glut manpages, so you may want to download the project GLUT package just to install its manpages.

2.5. Qt

qt-x11-2.2.4.tar.gz or later version

http://www.troll.no/

Qt is a cross-platform GUI library that makes it easy to create X applications with standard GUI elements (widgets) like menubars, scollbars, dropdown lists, checkboxes, buttons, multiple document interface, and many other GUI things. Using Qt, a program can be compiled for both MS Windows and X without changing any code. Its a very popular GUI library and is used to create the core libraries of KDE (http://www.kde.org/).

Qt has functions (previously as an extension in $QTDIR/extensions/opengl) for OpenGL that provides for creating OpenGL rendering contexts in Qt windows. This provides some alternative to both GLUT and using the glX functions directly, plus the added benefit of full access to the excellent qt widgets and cross-platform portability.

This is useful if you want to compile or develop programs based on Qt (e.g., KDE2 and its apps).

2.6. NVIDIA drivers (Mesa libGL replacement)

Note that XFree86 4.0.1 and later is required with driver 0.9-6 and later. If you have XFree86 4.0.0, then you'll have to download the older 0.9-4 version.

http://www.nvidia.com/

Tip: See the updated faq at Nvidia.com while you are downloading. It may have some important information not in this HOWTO.

The NVIDIA drivers provide a kernel driver: /lib/modules/2.2.16/video/NVdriver and libGL.so and libGLcore.so files that go into /usr/lib/ to replace and Mesa ones that might be in there. libGL.so is OpenGL. These files are Nvidia's own hardware accelerated OpenGL implementation.

2.7. Java 2 SDK, Java 3D extension, and Java PlugIn for Netscape (optional)

The following files are available at http://www.blackdown.org/:

Note that to install these Java files, your system needs to have glibc 2.1.3 or better. To check your version of glibc:

		ls -l /lib/libc*
        
On rpm-based systems (like RedHat and Mandrake), you can try:

		rpm -q glibc
		

Java2 1.3.0 FCS can also be used and it includes the JavaPlugin. If you use it, you don't have to get JavaPlugin-1.2.2-FCS. Installation of this Plugin is different and you'll have to see its documentation. Installation of Java2 1.3.0 itself, and Java3D, is the same as with Java2 1.2.2.

The Java 3D media extension contains many 3D demo programs/applets and takes advantage of the OpenGL hardware acceleration on the system. The Java 3D API uses the OpenGL API internally. The demos run as normal Java applications and also as applets inside Netscape (4.7x) via the Java PlugIn, or inside KDE's Konqueror 2.1 or later!