Most games developed for the PS3 don't use OpenGL at all, but are programmed "on the metal" i.e. make direct use of the GPU without an intermediate, abstrace API. Yes, there is a OpenGL-esque API for the PS3, but this is actually based on OpenGL-ES.
In OpenGL-ES there is no immediate mode. Immediatate Mode is this cumbersome method of passing geometry to OpenGL by starting a primitive with glBegin
and then chaining up calls of vertex attribute state setting, concluded by submitting the vertex by its position glVertex
and finishing with glEnd
. Nobody wants to use this! Especially not on a system with limited resources.
You have the geometry data in memory available anyway. So why not simply point OpenGL to use what's already there? Well, that's exactly what to do: Vertex Arrays. You give OpenGL pointers to where find data (generic glVertexAttribPointer
in modern OpenGL, or in old fixed function the predefined, fixed attributesglVertexPointer
, glTexCoordPointer
, glNormalPointer
, glColorPointer
) and then have it draw a whole bunch of it using glDrawElements
or glDrawArrays
.
In modern OpenGL the drawing process is controlled by user programmable shaders. In fixed function OpenGL all you can do is parametize a inflationary number of state variables.