PspGL: Difference between revisions
(Created page with "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...") |
EmilDalalyan (talk | contribs) (Correction of the formatting and some additions.) |
||
Line 1: | Line 1: | ||
'''pspGL''' - is a pure, minimal, hardware-accelerated implementation of something like | |||
OpenGL for the Playstation Portable. | |||
== Setting up == | |||
need to set up a PSP toolchain and SDK | Before you are able to compile it, you need to set up a PSP toolchain and SDK. | ||
Export PSP_MOUNTDIR=<your_PSP_mountpoint> and PSP_REVISION=<your_PSP_revision>. | Export PSP_MOUNTDIR=<your_PSP_mountpoint> and PSP_REVISION=<your_PSP_revision>. | ||
Line 13: | Line 14: | ||
$ make && make -C test-egl clean install | $ make && make -C test-egl clean install | ||
$ make && make -C test-glut clean install | $ make && make -C test-glut clean install | ||
== GLES implementation == | |||
All OpenGL-ES fixed-point commands are not implemented. Please take a look | All OpenGL-ES fixed-point commands are not implemented. Please take a look | ||
Line 18: | Line 21: | ||
to the minimum OpenGL-ES profile. Define PURE_GLES before including this file | to the minimum OpenGL-ES profile. Define PURE_GLES before including this file | ||
if you want to switch off these extensions. | if you want to switch off these extensions. | ||
== Technical issues == | |||
You can also use the GL/gl.h include set, but should avoid double-precision | You can also use the GL/gl.h include set, but should avoid double-precision | ||
Line 35: | Line 40: | ||
Only a minimum set of the core GLUT functions is implemented. | Only a minimum set of the core GLUT functions is implemented. | ||
== Debugging == | |||
pspgl_misc.[hc] contains some debug functions to dump PSP GE command buffers, | pspgl_misc.[hc] contains some debug functions to dump PSP GE command buffers, | ||
Line 41: | Line 48: | ||
this useful to debug your problems. Please note that still a lot of commands | this useful to debug your problems. Please note that still a lot of commands | ||
are missing, please send patches if you enhance this functionality. | are missing, please send patches if you enhance this functionality. | ||
== Restrictions == | |||
The PSP has been designed for gaming, so some OpenGL features that are rarely | The PSP has been designed for gaming, so some OpenGL features that are rarely | ||
Line 47: | Line 56: | ||
GL applications for the PSP: | 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. | |||
* 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. | |||
Holger Waechtler | == Licence == | ||
All files are BSD-licensed. <br> | |||
Authors are Holger Waechtler and Jeremy Fitzhardinge. | |||
Download | == Download == | ||
You can download it [https://github.com/jsgf/pspgl here] |
Latest revision as of 21:44, 12 August 2023
pspGL - is a pure, minimal, hardware-accelerated implementation of something like OpenGL for the Playstation Portable.
Setting up[edit | edit source]
Before you are able to compile it, you need to set up a PSP toolchain and SDK.
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
GLES implementation[edit | edit source]
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.
Technical issues[edit | edit source]
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.
Debugging[edit | edit source]
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.
Restrictions[edit | edit source]
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.
- 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.
Licence[edit | edit source]
All files are BSD-licensed.
Authors are Holger Waechtler and Jeremy Fitzhardinge.
Download[edit | edit source]
You can download it here