TitaniumGL is a 3D opengl driver implementation. It is capable to use hardware graphics acceleration or software rendering. Under Windows it acts as a OpenGL to Direct3D wrapper (dx9).
On other OS-es, it works as a
multicore software render). If D3D acceleration is not available on Windows, then TitaniumGL switches to software rendering internally. TitaniumGL supports a wide variety of graphics cards and operating systems.

Project's goal is to support classic OpenGL on old and new graphics cards with broken/bad or missing OpenGL drivers.

TitaniumGL is mainly designed for Windows 7+, but will also work on Windows 9x and XP. Linux,, FreeBSD, and ReactOS operation systems.
Under Windows,
TitaniumGL provides the OpenGL functionality with full hardware 3d acceleration, based on directx and your GPU.
TitaniumGL is not a classic wrapper, instead of translating OpenGL to equivalent Direct3D functions, it implements the entire graphics stack, by basically implementing a virtual GPU.
This allows for vendor specific bug mitigations, allows support for wide range of architectures and hardware with great performance.

Under Linux, BSD and ReactOS, TitaniumGL emulates the graphics card with CPU cores.
TitaniumGL is also compatible with nvidia's 3d vision (native stereo display).


Video: Quake2 demo version running with 80 fps

TitaniumGL for Windows can provide hardware accelerated OpenGL, if you are not able to install graphics drivers from your graphics card manufacturer, but the Windows driver has built in d3d acceleration.

TitaniumGL for Windows is compatible with Windows 98, Windows 98 SE, Windows ME, Windows 2000, Windows 2003, Windows XP, Windows Vista, 7, 8, and 8.1, but it will require DirectX9 graphics card with 128 MB video memory for good experience.

To use hardware accelerated TitaniumGL for Windows, you may need the latest DirectX 9 and DirectX compatible drivers to your graphics card, wich is mostly included and installed in your Windows. If not, download them, and install DirectX from Microsoft's webpage

Notice: Under win9x, DirectX9 is buggy, and not backwards compatible with DX5 class 3D accelerators. Therefore, XP is recommended.

Please note #1: DO NOT COPY TITANIUMGL TO YOUR WINDOWS DIRECTORY (unless, you know what are you doing!)
To use, you should copy the dll to the directory of your game's executable file, then simply start the game. No installation needed!

Please note #2: To install TitaniumGL for Linux or FreeBSD, you must overwrite in your system with TitaniumGL's graphics driver.
You may backup the original file. Read the readme.txt, before you do anything. If glxinfo renderer string says ,,TitaniumGL'', the installation was succesfull.
LD_PRELOAD will usually not work properly due to the buggy initialization code of some modern Linux games.

2023, 07.

Bugfix and new Win95/98/Direct3D7 backend
-New DirectX 7 based Win98 test version released for old DX5/6/7 era graphics cards.
-Small bugfixes in light and material code.
-Fixed bugs with point and line rendering.
-Added support for SGIS multitexture (not in extension list for now).
-Decreased API overhead a bit in D3D mode when loading textures.
-Optimized the code on single-core systems.
-Fixed some issues with multitexturing.
-Fixed a bug resulting crash when resizing the rendering window in Windows in software rendered mode.
-Fixed some integer types when loading a texture.
-Added some missing functionality to glGet.
-Added glGetBooleanv.
-UV coordinates were lost sometimes, when rendering from lists.
-VBO code got silently broken due to compiler update. Problem solved.
-Fixed a bug when uploading IBO data with glBufferSubDataARB.
-Added some missing functionality to push and pop attrib and clientattribs.
-Fixed ALPHA test functionality in D3D wrapper mode.
-Fixed flickering and box bugs in Medal of Honor.
-Fixed vegetation alpha issues in newer versions of Super Tuxkart.


2023, 06.

Full rewrite and refactoring of TitaniumGL.
-64 bit Windows version released.
-New command batching system.
-D3D acceleration autodetection and software fallback system.
-New, faster D3D subsystem.
-New software renderer - approx 3-8x faster than the old one.
-Switching to different license
-Fixed some missing BGR, BGRA, ABGR formats when using glDrawPixels
-Improved stability with Windows 98
-TitaniumGL got fine tuned to support newer type of video games.
-TitaniumGL now supports classic OpenGL game builds released after 2020.
-Fully separated API and state tracker.
-New (less buggy) lighting code.
-Removed some ancient unused extensions.
-Minimizing D3D API interaction for better speed.
-2x-3x faster texture uploading.
-New batching system supports up to 32 threads.
-New threading system which scales better up to 3-4 cores.
-Fixed broken Quad Strip implementation.
-TitaniumGL will do less memory copy operations to send the vertices to the gpu than before.
-TitaniumGL will optimize and simplify d3d vertex formats for more efficient operation.
-Faster tesselation code.
-Efficient pointer caching for less intensive utilization of memory management.


2015, 03.

-Added beta ARM binaries (nofpu, vfp and vf3 compatibility).
-Added 5x86 linux binaries for legacy CPU-s


2014, 01.

-Driver released (well a few days still left until 2014, whatever).
-Added mip-mapping support for the software renderer
-5-25% generic performance gain
-Fixed some ,,dotting'' bugs with the software renderer
-Fixed some segmentation fault bugs (texture upload forgot to lock rendering...)
-Fixed a memory-pool related crash on linux
-32 bit binary now compiled again with i686 flag
-Software renderer now supports up to 128 threads instead of 24


2013, 12.

-Voodoo Rampage/Specter 1000/2000 is now supported and working.


2013, 08.

-A new hardware rendered version released with better Windows9x compatibility, for legacy computers
-Software rendered version now runs on win9x too
-TitaniumGL software renderer now uses packet-based out-of-order rendering
-Software rendered version can now utilize up to 24 cores.
-TitaniumGL now uses smaller memory stack
-1.5x-2x speed-up in the software renderer when using 4 core computers


2012, 03.

-Finally, the linux version is released!
-Changed memory management: faster memory access
-Some potential double-free memory corruption bugs fixed


2011, 12.

-Automatic mipmap generation has been added
-Automatic aniso filtering has been added
-Interlaved arrays DONT force texturing to enabled, this was a mistake
-Now, max number of display list incrased to 5000
-glIsTexture returned broken result if tex id was 0

Older versions:

2011, 11.

-Z test is now disabled by default as the specification says
-Binded texture number is 0 again by default
-Fixed the handling of the multitexture combiners
-Tesselator algorythm is optimised (+30% speed-up)
-Texture 0 can now properly handle textures (at last i hope so)
-glGet on GL_ACTIVE_TEXTURE or GL_MAX_3D_TEXTURE_SIZE_EXT did disasterous things
-glFrustum now can be used on texture matrix
-Interlaved arrays now force texturing to enabled
-From now, some ogl 1.2 and 1.3 EXT functions can be requested without the EXT or ARB post-tag


2011, 09.

-FreeBSD alpha (first test release) is released
-ReactOS alpha (first test release) is released


2011, 06.

-Removed a small memory leak in display list creation
-Matrix stack depth was only 62 instead of 64
-Texture matrix stack depth was 2 instead of 4
-Fixed glGet with GL_TEXTURE_2D
-Semi-functioning TexGen stub added
-Added fake sphere and cube mapping
-glRasterPos2f display list encoding was broken
-glrotate/glscale/gltranslate/glmaterial display list encoding was broken
-Some texenv was not properly stored in the texture
-Default selected texture on TMU0 is now 1
-Permedia cards working again


2011, 05.

-Extension added: GL_ARB_map_buffer_range
-Extension added: GL_OES_matrix_get
-Color buffer writemask support has been added
-Speed-up around matrix calculations
-Thread handle leaking fixed
-Strange protch has been fixed in windowed rendering
-Number of acessible TMU's incared from 3 to 4
-Added a bounch of missing texture formats, like 4_4_4_4, 10_10_10_2, etc...
-Added fixed-point support
-Added experimental OpenGL ES 1.x support and ES context creation
-glPushAttrib was broken
-Fixed some bugs with Tuxracer
-Fixed some bugs in Tuxkart
-Default variables around light handling was broken
-Fixed missing colors with porrasturvat
-Fixed crash with stepmania
-Some fixes around lighting and material handling
-Fixed display list drawing when texturing is disabled
-Improved multi-cpu support
-Added some missing parameters to glGet
-Added some missing caps to glIsEnabled
-Improved SEGFAULT protection in VBO data mapper
-Added multisampling support under linux
-Scissoring now affects clear
-Big data blocks can now processed on multiple cpu cores
-Default viewport is fixed with SDL's buggy window init
-A small speed improvement in vertex processing
-A matrix calculation bug fixed with some complex matrixes
-Direct access to Directx's Hardware T&L pipeline in some situations
-Texture loading time improved for big textures.
-Perspective vertex flickering fixed
-Around total 50-300% speed-up.


2010, 11.

-Extension added: GL_OES_byte_coordinates
-Extension added: GL_ATI_meminfo
-Extension added: GL_EXT_texture_edge_clamp
-2x-3x speed up with fullscreen rendering with some older graphics cards.
-Secondary and third texture pipeline was corrupt in some cases with vertex array or vbo
-Recursive display list handling was broken
-Display list command compatibility was extended
-UV was broken with display lists with secondary and third texture pipeline
-Default precisity of the perspective correction is incrased
-Fixed a backbuffer creation issue
-LINE and POINT drawing code changed, now line and point sizes are supported
-2d bitmap framebuffer-draw moving has been fixed
-Scissor testing is now a bit faster
-Vertex UB color array fixed
-Fixed some clamping issues
-Fixed texture size issue with graphics cards with more than 2 gbyte vram


2010, 09.

-Array'a normal pointer was ignored if type wasnt float
-glWindowPos was missing
-Copying texture image to system ram was missing
-Some texture handling function was not initialised
properly, mading segfault possible in some cases
-interleaved data input is now accepted
-VBO is now created even if incoming parameters are NULL
-Geometry with Quad strips was corrupt
-In windowed rendering it was a too big protch on
the top of window
-now, 16-bit only 3d vga-s also can be used with 32-bit only games
-Transposed matrix function pointers was broken
-Texture-loss fixed with S3 Trio3D and Permedia2
-Client attrib bits was broken (fixed tuxkart and torcs)
-Fixed some alpha-bugs


2010, 06.

-Folowing extensions added:
-The code is now compiled in 6x86 mode as default.
-DLL imagebase modifyed.
-Scissor test has been fixed in D3D mode.
-Driver now can handle up to cpu cores.

WARNING: The author does not possess an OpenGL license from SGI or Chronos, and makes no claim that TitaniumGL is in any way a worthy replacement for OpenGL or associated with SGI. USE AT YOUR OWN RISK. See license for legal information.