GLdc: an OpenGL implementation for the SEGA Dreamcast
Go to file
Paul Cercueil cfaf24e5ee
CMake: Update CMake script to modern standards
Note that I dropped quite a few things related to CFLAGS:
- the -mfsrra / -mfsca discovery was clean cmake and could have stayed;
  but kos-cc already passes those flags, so -ffast-math is enough to
  enable the FSRRA / FSCA instructions.
- -fomit-frame-pointer is also a default option of KOS.
- -fexpensive-optimizations, -finline-functions and -fstrict-aliasing
  were redundant as they are enabled by the optimization level
  specified.
- -ffp-contract=fast is the default when using GNU C, which we are here.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
2026-06-27 12:14:09 +02:00
containers Allow compiling containers on Xbox 2026-02-15 07:33:44 +00:00
GL Merge branch 'glPolygonMode-limited-scope-integration' into 'master' 2026-06-27 06:33:55 +00:00
include/GL Updated the MR based on the feedback: 2026-06-20 14:34:27 -07:00
samples Merge branch 'nehe06-dt-sample' into 'master' 2026-06-27 06:27:06 +00:00
tests Fix POT repeat wrap test to upload POT texture first 2026-06-23 10:10:58 -07:00
toolchains Fix failing tests 2026-05-04 10:35:21 +01:00
tools Fix failing test 2026-06-23 06:23:52 +01:00
.gitattributes
.gitignore
.gitlab-ci.yml Build out to libGL.a instead of libGLdc.a 2023-11-29 11:25:52 +00:00
CMakeLists.txt CMake: Update CMake script to modern standards 2026-06-27 12:14:09 +02:00
LICENSE
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!