GLdc: an OpenGL implementation for the SEGA Dreamcast
Go to file
Luke Benstead ba10615722 Allow compiling containers on Xbox
Obviously GLdc doesn't work on XBox but the containers are fairly generic and are (ab)used
in the Simulant engine which does compile there.
2026-02-15 07:33:44 +00:00
containers Allow compiling containers on Xbox 2026-02-15 07:33:44 +00:00
GL Allow compiling containers on Xbox 2026-02-15 07:33:44 +00:00
include/GL Don't fail when passing GL_TEXTURE_BINDING_CUBE_MAP_ARB to glGet 2025-11-01 21:15:03 +00:00
samples Merge branch 'tnl_effects' into 'master' 2025-05-24 20:19:01 +00:00
tests Change all ifdefs to support both DC & Naomi 2025-02-22 14:42:00 +01:00
toolchains Fix .elf extension on C example executables 2023-03-04 16:11:11 -06:00
tools Implement defragmenting the memory 2023-09-08 17:49:46 +01:00
.gitattributes Ignore the noise... Just testing something. 2014-08-30 13:33:02 -04:00
.gitignore Add dcbuild & pcbuild folders to .gitignore 2023-03-04 16:10:34 -06:00
.gitlab-ci.yml Build out to libGL.a instead of libGLdc.a 2023-11-29 11:25:52 +00:00
CMakeLists.txt Cleanups 2025-12-10 21:39:53 +01:00
LICENSE Create LICENSE 2018-05-20 19:51:36 +01:00
README.md Update README.md to reflect latest changes 2025-12-10 21:39:09 +01:00

GLdc

Development of GLdc has moved to Gitlab

This is a partial implementation of OpenGL 1.2 for the SEGA Dreamcast for use with the KallistiOS SDK.

It began as a fork of libGL by Josh Pearson but has undergone a large refactor which is essentially a rewrite.

The aim is to implement as much of OpenGL 1.2 as possible, and to add additional features via extensions.

Things left to (re)implement:

  • Spotlights (Trivial)
  • Framebuffer extension (Trivial)
  • Texture Matrix (Trivial)

Things I'd like to do:

  • Use a clean "gl.h"
  • Define an extension for modifier volumes
  • Add support for point sprites
  • Optimise, add unit tests for correctness

Compiling

GLdc uses CMake for its build system, it currently ships with two "backends":

  • kospvr - This is the hardware-accelerated Dreamcast backend
  • software - This is a stub software rasterizer used for testing testing and debugging

To compile a Dreamcast debug build, you'll want to do something like the following:

mkdir dcbuild
cd dcbuild
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/Dreamcast.cmake -G "Unix Makefiles" ..
make

For a release build, replace the cmake line with with the following:

cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/Dreamcast.cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ..

For a release build WITHOUT building samples and tests, enter the following:

cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/Dreamcast.cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_SAMPLES=OFF -DBUILD_TESTS=OFF ..

You will need KallistiOS compiled and configured (e.g. the KOS_BASE environment variable must be set)

To compile for PC:

mkdir pcbuild
cd pcbuild
cmake -G "Unix Makefiles" ..
make

Special Thanks!

  • Massive shout out to Hayden Kowalchuk for diagnosing and fixing a large number of bugs while porting GL Quake to the Dreamcast. Absolute hero!