Hello,
Around the time ninjhax was first released, I wrote a software renderer with an OpenGL-based front-end. Recently as I've worked on more homebrew projects, I've began writing a GPU-enabled backend and over the course of several days and many headaches, I've got a working API with texture mapping, generic 2D/3D rendering, and many of the bread and butter functionalities you'd expect from an OpenGL driver. The goal of this project is to eventually implement a viable GL for homebrew projects that may be ported to other devices in the future, as well as support the extensions that the PICA200 provides.
What's working:
Not yet feasible (see below):
**Every function has safety checks and conforms to their specified error handling with very few exceptions. General rule of thumb: if something isn't drawn to expectation, check glGetError; if device soft locks or crashes to home menu, it's likely a bug in the driver.
***Currently, only GL_LIGHT0 can be used
Using immediate mode is not only slow, but I've also noticed it causes the GPU to hang after running awhile (maybe ~10 mins?). I've yet to notice this while using cached vertex data, so I recommend to cache all your vertex data into display lists and use immediate mode sparsely. Hacky fix.
If you use this library, attribution in your readme/documentation is appreciated.
Currently, this project is closed source but the library itself and the necessary headers are provided as well as an example app rendering a well-known monkey
NeHe tutorials 01 - 05 now available.
Source repo: here
Extension documentation: here
Around the time ninjhax was first released, I wrote a software renderer with an OpenGL-based front-end. Recently as I've worked on more homebrew projects, I've began writing a GPU-enabled backend and over the course of several days and many headaches, I've got a working API with texture mapping, generic 2D/3D rendering, and many of the bread and butter functionalities you'd expect from an OpenGL driver. The goal of this project is to eventually implement a viable GL for homebrew projects that may be ported to other devices in the future, as well as support the extensions that the PICA200 provides.
What's working:
- Textures
- Matrix stacks (Projection & Modelview full support, Texture partial)
- Matrix operations (glLoadIdentity, glRotate, glTranslate, glOrtho, glFrustumf)
- Alpha blending
- Enable/Disable depth test
- glClearColor
- GL_TRIANGLES, GL_QUADS
- glViewport
- glScissor
- Display lists (glNewList, glEndList, glCallList, glGenLists)
- glGetError
- Per-vertex lighting***
- Alpha testing
- Stencil testing and stencil buffer operations
- glTexSubImage2D
- glScissorMode
Not yet feasible (see below):
- GL_POINTS,GL_LINES and related
- Nothing is left on my original TODO
**Every function has safety checks and conforms to their specified error handling with very few exceptions. General rule of thumb: if something isn't drawn to expectation, check glGetError; if device soft locks or crashes to home menu, it's likely a bug in the driver.
***Currently, only GL_LIGHT0 can be used
If you use this library, attribution in your readme/documentation is appreciated.
NeHe tutorials 01 - 05 now available.
Source repo: here
Extension documentation: here
Last edited by machinamentum,