Discussion in 'Article Discussion' started by CardJoe, 27 Jul 2010.
Wish there were more games designed using OpenGL so that we could get a better idea of what the spec is capable of. I remember running GL Quake years ago and thinking it was one of the most amazing advances in games ever.
******** Ben obviously was caught completely off guard and couldn't get his team of ******** artists together quick enough for a response other than "Yeah, we're doing it too!" (sticks tongue out)
A lot of ID games were OpenGL if i remember correctly...
Isn't OpenGL used more for professional purposes whereas DX is aimed more at gamers? Could that be why there's not as much OpenGL usage?
OpenGL is used far more often than D3D. The reason why D3D is probably more used for games is because outside of Windows there's little demand for games, and the rest requires porting anyway (XBox 360 doesn't use D3D or OpenGL, PS3 and Wii support OpenGL ES, but almost nobody uses that API on these consoles).
That said, I do think that developing using OpenGL is more pleasant in general. It's more open, there are more diverse tools available, GLSL is pretty nice, it connects with OpenCL and such and in general it feels a bit more robust. That's why my game studio uses OGL for our game engine. Not being stuck with the bloated DX SDK is just another bonus.
Of course, we won't be using OGL 4 for a while. OGL 3 is where it's at for compatibility at this point. OGL 4 requires GTX4xx/HD5xxx cards, which are still quite uncommon. Maybe in a year or 2-3
Steam/valve seem to be using it for their MAC OS clients - maybe they might start an industry trend!?
Firstly the XBox uses a variant of DX that is SM3.0 compatible, the PS3 has its own API since it pretty much does all graphics processing on the cell processor and is also SM3.0 compatible. D3D is more used for games since there is more support for the API and it is kept up to date.
I cant help but feel that you obviously have never developed in directX. . I cant believe you would say that the DirectX SDK is bloated? How so? The DX10 API consist of around 50 function calls, the directX API also comes with documentation, sample code, tutorials and more like a graphics profiler. How is the API bloated?!
If you want to talk about bloated, look at openGL, they havent removed a single feature no matter how outdated and unused. Their method of adding feature is tacking them onto the API by using an extension. The extension system in openGL is also a complete mess, and if anyone thinks that porting openGL across platforms is simple, it is not! There are often several extensions that do the same thing with varying levels of support across them. Just look at the complete list of extensions available: http://www.opengl.org/registry/ , all this to do things that you can do with DX10 straight out of the box.
The codebase in the directX sdk is a lot neater and is standardized unlike openGL and is a lot more straightforward once you know what you are doing, for example that whole matrix stack openGL has going on is a complete mess. I know you can manually set the matrices, but that requires a state change to swap between them. The way things were done 10yrs is not the correct way to do things today. The GPUs of today don't even resemble the GPUs five years ago.
I worked in openGL for quite a while and once I moved over to DX10 there is absolutely no way I'd look back. As a developer Direct3D10 has made my life considerably easy and simpler. It also gives me more control over the pipeline quicker. Direct3D9 is a tad bloated for the exact same reasons as openGL. I'm also not fond of having fixed function pipeline stage present in the API.
Also openGL is an open standard just like directX, both are not open source and so developing for both is identical, your statement that development for openGL is more open is absolutely ludicrous. There is absolutely no difference in regards to openness.
As for the tools situation, I'd also have to disagree, most tools support both DX and openGL, with some tools only supporting DX like PIX. A lot of the openGL tools haven't been updated in years. ATI still doesn't have a modern shader editor, while FXcomposer doesn't support GLSL. If you want to make ridiculous statements like that please back it up with some proof, like maybe a list of these diverse openGL only tools!
openGL is traditionally more used in the CAD industry, since it was a better API back in the day, these days its lagged behind and is simply playing catch up by tacking on new features to an already bloated API. At some stage Khronos needs to stop adding and do a rewrite, they need to strip out all the legacy support and modernize the API but they wont since its an API by committee and so a lot of the committee members will not remove legacy elements since then they would have to support two versions of openGL and it will affect their bottomline.
If you want to make obviously biased statements please back them up with some proof!!
Well, first of all I'm not the person in charge of the game engine, so for the specific details you'd have to ask my colleague who is responsible for developing and maintaining it. From talking to him it is however my impression that he wouldn't voluntarily change to Direct3D and that he's pretty happy with OGL. Naturally, he has a few points in OGL he complains about, but similarly there are things in D3D which are done better in OGL.
Also, where do you get the idea from that DX is an open standard? It's a proprietary, closed standard, fully controlled by MSFT, who determines what gets into it. The Khronos group, on the other hand, is a loosely organized group of industry people, with many outside it contributing ideas and extensions (EXT_) which are then integrated into the next standard, which is fully open.
The difference couldn't be more significant.
They are both publicly available and free to use. If you make a game/app using the DX SDK you don't need to pay any fees to MS, so development using both openGL and DX is the same!
The difference between the development of the APIs is that whereas DX is designed by a team with a single goal, openGL is by committee which means it needs to please everyone on the committee including CAD vendors that do not want or need any advanced new features and so don't care about revamping an aging standard.
DX has been ahead of openGL in recent times for example: geometry shaders have been available in DX since 2007 whereas only openGL 3.2 added official support for them via an extension in 2009.
Directx9 and openGL are similar in bloat, except that directx usually takes a bit more code to get things done. I would say that openGL and directx9 are identical, except that for a beginner they can get started with openGL a lot quicker and get things done without any background in graphics programming whereas with DX you are expected to have a bit of a background in computer graphics. There is a lot of debate that dx9 had a lot of slow state changes and mode changes over openGL and that was true but it was also due to the driver model in use in windows. This was the major reason for the move to DX10 and the need for a rewrite of the API and the driver model. So comparing DX9 and openGL, openGL would probably be a better choice.
Comparing DX10 and openGL, dx10 is definitely in my opinion a superior API. Its very lightweight, the performance gains that the API allows for are extreme (the reason this isn't noticeable in early DX10 games is that the programming paradigm is different for DX10 and things need to be done differently and so simply porting a renderer across without redesign wont offer much performance win).
You have also not mentioned any of these diverse range of openGL tools not available for DX. I am very curious to see that list.
openGL IS NOT FULLY OPEN!!! Give me a link to source code, and then you can tell me its fully open.
Also design by committee is almost never a good idea, since every committee member has a different agendas and different needs, half the reason openGL lagged behind directX is that the committee member saw no need for any further features to be added and felt openGL was fine as it is.
looking at the monolithic collada format from the same group, you can see design by committee at work, in trying to get support for all the various requirements in one format, you end up with a 400 page xml spec and require a massive amount of code just to load the most basic geometry data. Not to mention that the format is not standardized at all so almost every single DCC tool out there exports it in a different manner, which tends to limit its intended use as an intermediary format which is its intended use.
If you want to see the problem with using OpenGL for gaming, look towards the Mac right now. Games for PC platforms are designed around DirectX. The hardware they run on is designed around DirectX. The drivers between the two are optimised for DirectX. This is why WoW, HL2, Portal and Torchlight all run about at about half the frame rate on a Mac running OS X compared with the same hardware running Windows. I would be glad to see any indications of a move towards greater performance in OpenGL. Of course, it won't happen. DirectX is too streamlined in it's home environment for OpenGL to ever be a threat again.
What? OpenGL is a standard, not an implementation. It's nVidia, AMD, Mesa, Intel and such who write implementations. Any manufacturer of GPUs is also welcome to add their own extensions, whereas for D3D there is no provision for extensions.
OpenGL is a standardized API, the API's are usually written by the platform developers (microsoft, not sure who does the API for nix systems) and the implementations are written by the hardware manufacturers (the drivers). DirectX works the same way, the implementations are written by the hardware manufacturers. The source code for either API is not available nor is the source code for the various implementations. So saying one is more open than the other isnt really all that valid. I think the open refers to more the fact that the development of the standard is done in a more open way(which is not always a good thing - people seem to assume just becuase something is open/open source, its better).
Since everyone can add in their own extensions, cross platform portability goes out the window, there are countless extensions that only work on certain hardware. There is no need for the extension system in DX mainly since the API's feature set is fixed.
This is why the DEVCAPS feature in DX11 is so wonderful, it allows developers to write a single DX11 renderer and run it one DX10 hardware (potentially even on DX9 hardware) just by lowering the feature level making the developers lives easier. AFAIK its not possible to swap openGL extensions at runtime.
OpenGL allows for cross platform gaming. Imo that's the only argument that truely matters. As much as you tout the features of DirectX it's still locked to the XBox and the Windows system. With Valve picking up the gauntlet and being the first modern developer (apart from id Software) to release their games across multiple platforms (Mac atm, but I'm sure there'll be Steam Linux soon) I think you may see others take similar approaches.
In the grand scheme of things using OpenGL isn't much "worse" than DirectX from a developers stand point, but having the ability for your product to be ported to any platform is priceless.
Separate names with a comma.