This might be an odd question, but how were things like rendering APIs handled on old game consoles?

Discussion in 'General Gaming Discussion' started by BiggieCheese, Apr 15, 2019.

  1. BiggieCheese

    BiggieCheese Advanced Member

    Oct 29, 2017
    United States
    I’ve always been curious about this stuff, like - how well did the GX API on the Gamecube (and Wii) work in comparison to the versions of OpenGL it was supposedly based on at the time, as well as other, more modern renderers? And was it required for developers to use it if they wanted to get their games published and past Nintendo’s certification process?
    There’s other stuff too, for example, apparently Sony had their own barebones implementation of OpenGL for the PS2 back in the day, did that turn out okay? Do we know of any officially-released games that utilize it? I’m also curious about some of the slightly more modern stuff, I remember reading that the PS3 has a low-level graphics API (LibGCM) available, at least one flavor of OpenGL and also allows for on-the-metal programming to some degree as well, what option did devs opt for in most cases? Could any of these rendering solutions be more efficient/capable than the Xbox 360’s version of Direct3D 9?
  2. FAST6191

    FAST6191 Techromancer

    pip Reporter
    Nov 21, 2005
    United Kingdom
    I am less familiar with this than I am the 2d console stuff. It should be noted though that opengl and directx/direct3d are not pure software/apis and also help define the hardware and said hardware influences the APIs -- both camps have massive consultation and working groups composed of card makers, game/3d devs, OS makers and other interested parties. If you are familiar more with old school CPUs where Intel and such would come along with a disassembler, run it through a bunch of the hotness of the day and then total up what instructions where used before optimising those for the next CPU, making... self fulfilling prophecy is the wrong term but something similar.

    Anyway required? I don't know about the later systems (see something like the King Kong hack on the 360 and how it abused the 3d system to work which probably curtailed some of the fun there) but earlier ones then most of the dev requirements were about boot times, things that needed displaying before boot, what censorship games needed to have, what you had to do to handle epilepsy, some measure of reliability... devs then being reasonably free to colour outside the lines. However as most console makers would provide a shiny API to play with that worked well enough to produce graphics of the day then most would play to that (reinventing the wheel being an expensive hobby with few gains, those that might have though could do things other could not).
    A few times we saw middleware that served to make the apparent interaction that of another and allowing devs to use directX type calls and setups but still be opengl at its heart (much like IT education in schools is often here's how to use MS office then directX was occasionally the favoured method taught in coding schools with openGL for a lot of that time being the domain of fancy 3d rendering and engineering CAD and left at that). Similarly if you bought in an engine (unreal* or whatever) then that would also come with a lot of premade stuff which abstracted it further.
    Some devs that could bear the expense, or otherwise had the talent, would make use of custom shaders when that became a thing. Shader languages are a crazy thing though so you can ponder that on your own time. However when people talked of bare metal 3d stuff then it quite often meant custom shaders rather than them deciding bones/skeletal based 3d was in when the main console was about vertex stuff.

    *I tried to find it but recall seeing a talk from GDC once with a dev detailing what it was like to work on licensed properties (covered some work on Tron). One of the anecdotes there being about Unreal had a bug where a specific numbered item was hardcoded to be a certain way for one of Unreal's games, obviously then troubling the other dev which did not want that. The "solution" then being make item number blah a box and then the one after that what you want.
    GDC often has interesting stuff here if you are curious so do have a look there.

    "work in comparison to the versions of OpenGL it was supposedly based on"
    I don't think I ever saw direct comparisons for the GC-PS2-xbox outside of boring stuff like how many MIPS and basic hardware comparisons. While many things back then took serious inspiration from contemporary standards then other than the original xbox it still ended up fairly custom**, and still quite dependent upon the CPU and RAM for a lot of other things. The PS360 was more or less graphics cards of the day (or day just passed -- Vista's failure to launch was not the only reason directx9 stuck around for as long as it did) though.

    **the 3ds probably being the purest example of it being nominally based around one version of the spec (in this case embedded opengl) but borrowing a few things from later versions and bolting those on (with the general lack of care and attention Nintendo usually does when they try this -- from what I can tell it was not quite as ghastly as their Wii U powerpc but... it was not a shiny example of things done as best as they can either).
    BiggieCheese likes this.