PspGL
Hi,
pspGL is a pure, minimal, hardware-accelerated implementation of something like OpenGL for the Playstation Portable. Before you are able to compile it, you need to set up a PSP toolchain and SDK as described on http://pspdev.org.
Export PSP_MOUNTDIR=<your_PSP_mountpoint> and PSP_REVISION=<your_PSP_revision>. Then type 'make' to build, 'make -C <demodir> install' to build and install one of the demos. Here an example how to build for a 1.50 PSP on MacOS-X:
$ export PSP_MOUNTDIR=/Volumes/PSP $ export PSP_REVISION=1.50 $ make && make -C test-egl clean install $ make && make -C test-glut clean install
All OpenGL-ES fixed-point commands are not implemented. Please take a look in the GLES/gl.h header file for the OpenGL commands implemented additionally to the minimum OpenGL-ES profile. Define PURE_GLES before including this file if you want to switch off these extensions.
You can also use the GL/gl.h include set, but should avoid double-precision function calls for performance reasons.
Texture objects are not yet implemented, glTexImage2D always binds the current texture. See the eglcube demo for an example.
Display lists are used internally, but not exposed to the GL API.
Vertex Arrays are supported, but only the interleaved native PSP vertex formats. No repacking is done, vertex data pointers must be aligned to 16byte boundaries, since they are passed directly to the DMA controller for maximum performance.
PSP-extensions (Sprites, Bezier patches, Vertex and Matrix blending) are not yet implemented. Well-done patches are welcome!
Only a minimum set of the core GLUT functions is implemented.
pspgl_misc.[hc] contains some debug functions to dump PSP GE command buffers, the GE register set and the GE matrix stack to the memory stick. In the tools/ directory you find a rough disassembler for GE packets, maybe you find this useful to debug your problems. Please note that still a lot of commands are missing, please send patches if you enhance this functionality.
The PSP has been designed for gaming, so some OpenGL features that are rarely used in games are missing and some have only somewhat limited support by the Hardware. Here is a short list of things you should consider when writing GL applications for the PSP:
- only 4 light sources are supported - antialiasing can get switched on/off only globally - No user-defined clip planes are supported - only single-pixel wide lines and points - Alpha channel and Stencil buffer in the frambuffer are shared. (Enable Stencil test if you want to write to the stencil buffer) - We don't know yet whether/how the fog function can get changed. - Only single-sided lighting, for two sided shading you need a CW and a CCW pass. - No wireframe rendering, we don' know whether the PSP supports this.
This list is by no means complete, please report if you encounter other issues.
All files are BSD-licensed, feel free to use it in free or commercial projects. enjoy, have fun,
Holger Waechtler
Download