Monday, May 2, 2016

Which consoles may I target with OpenGL?


I'm thinking on technical design for a game/game engine using OpenGL, and I wonder if there is any recent consoles (Xbox360, PS3, Wii U, Xbox one and PS4) that I could work with if I do so.


I found plenty of conflicting answers through forums. The only straight answer seems that it is impossible for Xboxes because Microsoft forbid to use something else than DirectX, its own product.


So, finally, does anyone know for sure which consoles can support an OpenGL-based game?



Answer



Probably the easiest answer: Don't bother, instead pick what works best for you to work with now (i.e. whatever you're more proficient with.


If you think you should write an engine with portability in mind ("create games, not engines!"), create a renderer abstraction layer, so you're able to plug in any back end you'd need.


While most desktop systems understand/have OpenGL, you'll need OpenGL ES for most mobile platforms. As such it would be just a small additional step to add DirectX as well later.


More specific details are, as far as I know, really hard to get, since most specifics are hidden behind NDAs and stuff like that (for whatever reason).



It's pretty much known that Microsoft favors (and only supports?) DirectX, while I think Sony offers support for OpenGL (although I'm not sure about the feature level/version). Since both require a developer license, I guess they're out of question for now anyway.


No idea about Nintendo, possibly OpenGL or some proprietary stuff? They want you to sign contracts first as well, anyway.


Many other (micro) consoles (such as the Ouya, Amazon's FireTV, etc.) use Android and as such support OpenGL ES 1.1 as well as OpenGL ES 2.0.


Windows PCs usually offer DirectX as well as OpenGL, OpenGL ES is indirectly supported through wrappers (like Google's ANGLE project).


Linux and Mac based systems usually provide OpenGL and OpenGL ES. Wrappers for DirectX exist, although I'm pretty sure this is really just exclusive to emulation. Haven't seen any used elsewhere.


Unfortunately, as you can see, there's no "one interface fits them all" solution.


If you want to limit yourself to one interface for now (which you definitely should IMO), go with (modern) OpenGL. It allows you the easiest/biggest cross-platform use right now, and also makes debugging pretty easy. With some adjustments (to use OpenGL ES rather than OpenGL), this code will run on most phones and micro consoles as well.


If you favor programming under Windows with Microsoft Visual Studio, DirectX might be an option for the Visual Studio integration (graphics debugger, etc.). Just keep in mind this won't work anywhere else (except XBox, which requires a developer license anyway).


No comments:

Post a Comment

Simple past, Present perfect Past perfect

Can you tell me which form of the following sentences is the correct one please? Imagine two friends discussing the gym... I was in a good s...