GLdc: an OpenGL implementation for the SEGA Dreamcast
Go to file
UnknownShadow200 91b59ceca8 glXYZPointer methods now avoid recomputing state when only the data pointer changes
It is relatively common to call glXYZPointer multiple times with a different pointer but the same type/size
2024-10-07 18:06:03 +11:00
containers Move aligned_vector_reserve onto cold path since it should rarely be called 2024-10-05 11:34:14 +10:00
GL glXYZPointer methods now avoid recomputing state when only the data pointer changes 2024-10-07 18:06:03 +11:00
include/GL Fix lines 2024-10-02 19:00:05 +10:00
samples Primitive modes sample should let you press START to exit, like other samples 2024-10-05 06:49:04 +10:00
tests Nehe20 Build Fix + Warnings cleanup for GCC14.1.0. 2024-07-31 20:35:34 -05: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
.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 Add primitive modes sample, quad strips partially work 2024-10-02 19:28:02 +10:00
LICENSE
README.md Update README 2023-04-17 19:35:06 +02: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 ..

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!