Why You Should Use OpenGL and Not DirectX
stickyboot writes "The independent games developer Wolfire describes why they decided to use OpenGL instead of DirectX. The article mainly discusses the marketing strategies behind DirectX and how the API became so popular. It also goes over why a developer would choose OpenGL over DirectX and what this decision means for the gamer. 'Back in 1997, the situation was similar to how it is now. Microsoft was running a massive marketing campaign for Direct3D, and soon everyone "just knew" that it was faster and better than OpenGL. This started to change when Chris Hecker published his open letter denouncing DirectX. Soon after that, John Carmack posted his famous OpenGL rant, and put his money where his mouth was by implementing all of Id Software's games in OpenGL, proving once and for all that DirectX was unnecessary for high-end 3D gaming. This lesson appears to have been forgotten over the last few years. Most game developers have fallen under the spell of DirectX marketing, or into the whirlpool of vicious cycles and network advantages.'"
I am still kind of surprised that even after so many years, the open source communitys answer to marketing is only ranting about it.
Providing libraries, API's or platforms is NOT only about technical platform. *Nothing* in the world works like that. You must "market" it to companies, create a community around it with the right people and actually provide support and good tools to the developers. You can rant all you want about the technical sides of things, but if you do not understand this and completely ignore it you're only hurting yourself.
I have worked with both DirectX and OpenGL. In my opinion, OpenGL is loosing because:
1) DirectX has a comprehensive, well-documented references and documentation
2) DirectX provides a lot more than just 3D drawing - sounds, networking, fonts, input processing, and it used to have an API for 2D graphics before (relevant because the story is about why DirectX gained marketshare)
3) The DirectX libraries had more support in whatever coding language you wanted to use. You can argue this with the point that of course they had because Microsoft is a company so they can do it, but that doesn't change it. In fact, it would show that propretiery formats and libraries are better than open
4) Later it was possible to easily develop XBOX 360 games with DirectX and the tools were made good and easy to pick up. You may say it's irrelevant, that MS is using another market to improve their position, but it is not irrelevant. And unless OpenGL supporters start to work at it too, they're going to lose. Give more support and more value for the work!
5) DirectX was easy to pick up, and everyone supported it. If it's easy to pick up for beginners, they'll learn it and continue using it later as a professional (the same thing as why Adobe doesn't really care about home users Photoshop piracy)
It is NOT only about providing the technical platform. It is also about providing all the things that company it - some may call that "marketing", but it's mostly about giving support to those who use the platform, and giving more value for their time, work and money.
As a former OpenGL developer, I am not too fond of GL anymore.
Khronos really disappointed a lot of people when they announced the GL3 specs. They had promised SO much and delivered SO little. Khronos claimed that it didn't want to piss of the CAD community, which is heavily GL based. They basically chose to please the CAD community instead of the gaming community.
That move totally killed GL for me.
In an article a couple years back during the Doom 3 release he(John Carmack) said in later articles that they would be moving away from the OpenGL platform and considering he was one of the biggest backers of it. He even said in the article that they liked DirectX and the new features they have added, also that it was a lot better to work with these days and supported more. I can only imagine after the last fiasco update that OpenGL put out and all the missing features they promised, it looks pretty dismal for that development team as they cannot deliver what they promise.
Really the last place OpenGL stands strong is in AutoCAD and even they have indicated that the platform will not last longer, so we may see AutoCAD be using DirectX in the next few 5-10 years.
GL quake? :D
This is like a VHS vs. Betamax debate. Like millions of other people, I'm not a developer. I exclusively use Windows for PC gaming. I could give two flying F's whether my game is developed in OGL or DX. Coke, Pepsi, Ford, Chevy, just don't care...
There's nothing around it; OpenGL desperately needs a killer app.
Show people something amazing and tell them "OpenGL did This."
crazy dynamite monkey
OpenGL and not Direct3D. OpenGl is best in my view simply for cross platform. If OGL3 was what it was to be it would have been better. In the end legacy won that battle.
My understanding is that devs should use OpenGL because they want to do a whole bunch more work writing code for each individual graphics card.
Also, Direct3D is pushed by Microsoft (heavy PR and community support), unlike the openGL committee (no PR and fragmented community support) so the base spec is perceived to be slower/inferior.
I'm not sure if you've noticed, but both windows and the Xbox/360 use DirectX, which represents something like 50-90% of the "gaming market". It's simply easier to write your game/engine for Direct X and be ready to port it to console/PC with little more than a recompile. I don't know if the Xbox supports openGL at all, but I doubt it.
moox. for a new generation.
DirectX is made for games. You can use it for other kinds of applications, but if you want to do something that you do in a game, there is likely a function or construct specifically for what you need. It's docs assume you are making a game and when there are multiple ways to do something they often point out the faster way. heck it only works with triangulated mesh data.
Open GL is made for EVERYTHING. Sure, you can use it for games. There's nothing wrong with that, but i'm not John Carmack. That shit is hard for me. If i want to make a game, i'll take the platform that holds my hand.
Plus, like others said, direct x is a whole game api. it's not just graphics. it's input, it's networking, it's sound. the whole platform is very cohesive. I'd rather just keep up with one api, one download, etc than have to follow open gl, open al, etc.
anyway modern game development means licensing an engine. engine developers worry about supporting open gl or direct x.
The ultimate monetary advantage of using OpenGL for games (imo and ime) is it makes Mac porting a hell of a lot easier.
The ultimate monetary downside of making Mac games is that only a small fraction of the install base can upgrade their video cards - the one constantly-moving PC gaming component.
You can build a useable gaming PC for under $700 - the buy-in for a Mac with an upgradeable video card is presently $2499. With the vast majority of PC gamers using wintendos, Windows/DirectX is the LCD. It's where most (or all) of the money is.
I think it's fantastic that iD uses OpenGL and makes all of their games cross platform. I also think it's unfortunate that iD is the exception to the rule... but I also vote with my wallet, and I use a $600 non-upgradeable (video, anyway) Mac Mini for all of my Mac-oriented needs, and a massively-upgradeable, equally-priced Shuttle PC for everything else. Which includes a long list of games that haven't been released on the Mac - and even if they had been, wouldn't be playable on the GMA-950 video chipset. It's shite for games, fine for Photoshop... and Windows is the reverse for me.
If I need a wintendo to play Orange Box or S.T.A.L.K.E.R., does it really matter if the game uses DirectX or OpenGL?
Not really. :-|
I don't know whether to laugh or cry at people like you.
Let's just sum up the platforms our company supports:
PS3
Wii
Linux
Mac
Windows
Android
iPhone
Various embedded custom ARM based hardware
Guess which API is the one we use for all of those platforms - except the two consoles?
OpenGL
Guess which API will be used for the next media hardware platform no one has heard about yet?
OpenGL
So, yeah, go right ahead and keep babbling about how somehow OpenGL needs to 'prove' itself. DirectX is a dead end API to anyone except the fading Windows gaming market and teenage Windows only coders.
There's nothing around it; OpenGL desperately needs a killer app.
Show people something amazing and tell them "OpenGL did This."
What about all the stuff id put out? GLQuake (remember how much of a quantum leap that was over anything at the time with a 3dfx card?), Quake 3, Doom 3, etc...When you think about that, one does wonder if it's just MS and it's marketing droids that got Direct3D to where it is today.
funny how the article doesn't mention that guys like John Carmack have gone on to use DirectX for various things and I don't seem him crying about using it for the XBox 360.
3) False -- Name me one language that doesn't have OpenGL bindings
How about this
Like all pain, suffering is a signal that something isn't right
I'm not a game programmer, but back when 2.0 first launched, I did hear programmers say it had valid technical merits over DirectX at the time. Yet now all I hear is that the openGL 3.0 standard didn't evolve the way people wanted, and it isn't nearly as good as DirectX anymore. Is there any truth to this?
http://blindscribblings.com - Tasty pop-culture in conceptual fashion.
I've dabbled in 3D programming, I haven't done anything amazing, let alone made my own game, but I will say that D3D is much easier to write working code than OpenGL. With OpenGL I got about as far as a spinning triangle on the screen. With D3D I was able to get to the point where I was rendering a model on the screen and manipulating it with pixel and vertex shaders.
Somebody earlier hit the the nail on the head when they said that because it's easier it's what people will start and subsequently stick with. Not only that, but as a business if it takes your programmers 10 months to write a graphics engine in D3D and 12 months to write one in OpenGL, which one are you going to go for? There aren't many instances where I will go to bat for MS, but DirectX has a better graphics API compared to OpenGL.
Oh, a lesson in history from Mr. I'm my own grandpa.
And so far OpenGL is winning over DirectX.
Said the anonymous coward
Please tell me how many companies care about the niche market of 0.1% of Linux users? How many Linux games do you see? And don't even get me started how much bitching there would be if the "bad" companies wouldn't open source their games when releasing Linux versions.
Also, you need to develop the games differently to PS3, Wii, Android and iPhone anyways. Or do you think they run the same PC version?
Also, many games that work on Windows and use DirectX work on Mac also. While technically using CrossOver, they still do.
Actually, the more I read your comment its making me think you're being sarcastic with all the fading Windows gaming market and "teenage Windows only coders". Funny how you got modded up.
Too bad OpenGL royally sucks ass on ATI cards.
Carmack's problems were with one particular way of using Direct3D, which is what he would have had to use for games like Quake. He was pretty clear that he had no problem with it for games that did not need that particular mode.
Yes, it's a an obvious lie that companies doing game and non-game graphics applications on the iPhone, Android, and ARM based media devices are all using OpenGL ES. And the same companies that are targeting Linux,Mac OS, and Windows are using OpenGL.
Don't care about history. Don't care about politics. Don't care about marketing. If I'm developing a commercial application, I'll use the best tool I can find so that I can make the most money possible.
They should focus their argument on the merits of their tool, not on the other crap.
A slashdotter who didn't build his own computer is like a Jedi who didn't build his own lightsaber.
Xbox360: D3D only
Windows: Both
Wii/Playstation3: OpenGL/ES
Mac: OpenGL
mobile market: OpenGL (winmo is dead).
The most popular gaming console mandates D3D, therefore trying to keep games out of competiors hands. And they're still portable to Windows.
Sony tries something similar with ES, as well as Nontendo.
Microsoft holds a strong grip on gaming market. Only the mobile market is slipping out of control, but those games are different codebase anyway.
OSX crowd isn't about gaming, they don't care (except for MMO's).
Linux: not really relevant, even if drivers improve.
Unless MS opens up D3D, we will be stuck with two equivalent API's for too long (or until another antitrust case tackles this).
Right now only option for making a game for all popular platforms is dual OGL/D3D engine, thanks to 360.
I programmed on both, and DirectX is way better on every aspect (except that Microsoft own it). This article is stuck in time 5years ago.
"First of all, if a language can call C APIs (and, in particular, can deal with C function pointers returned by those APIs), it can call COM APIs as well." - by shutdown -p now (807394) on Friday January 08, @04:59PM (#30700722)
Per my subject-line above, & this quote from you?
110% correct on your part!
I've also utilized both DirectX &/or OpenGL in both Delphi & C++, & I used it while experimenting with both API sets to see how they worked (this was over 10++ yrs. ago in fact, so I could learn more about them, & of course, programming-in-general). I did that via screensaver creation (by hand using MSVC++ &/or Borland Delphi).
Like any programming library, you can use it in anything that can handle a "callback" basically.
OpenGL is just like DirectX IN TERMS OF DISPLAY ENGINES TO THE SCREEN DEVICE CONTEXT, & both are just a set of libraries & function/method calls you use as you said, from said lib collections.
Personally, & this is just me speaking an opinion though (from having used both to create screensavers here)?
I found working with OpenGL a bit easier than it was working with DirectX... but, that was around a decade back!
Als/again, to be fair?? DirectX does have the ability to control a lot more than just display, by itself/natively.
HOWEVER: DirectX more-or-less "welds you into" Microsoft-based stuff pretty much afaik (&, perhaps, that is its only 'downside' really).
APK
P.S.=> I also think sopssa made a mistake in what you quoted from he, & I also believe you too noted it in his stating that DirectX can only be used by Microsoft-based compilers, because what you stated (& which I wholly agree with) is correct to the letter as far as I am concerned (& probably like yourself, I've also used both OpenGL & DirectX here too)... apk
Sick.
Yea but are your games actually popular and fun or have zero market share? That is the real question...
Tired of my customary (Score:1)
Agreed
Direct3D is new and modern. OpenGL is old, stagnant, and increasingly obselete.
There are many platforms that use OpenGL, like PS3, Wii and iPhone etc, etc...
I don't know of one killer D3D app that can't be done with OpenGL, in fact OpenGL can do anything that D3D can, they are just APIs.
True, Microsoft have created a simple platform to develop on, and it is more user friendly. But it is just a developers trap.
Cross platform development can be achieved with a little more effort. And if you look round the web, I'm sure you'll find cross platform libraries for game development, both free and commercial.
For instance look at the Lego games, they are cross platform, and I am looking forward to Bioshock on the Mac. There was a time when I though that Microsoft had cornered the market, but if you have a PS3, Wii, iPhone and Mac. There is not much you can't get.
I still love playing the old Thief games from around 2000. If you try to run them on modern cards, there are problems ranging from downscaled color depth to failing to initialize the 3D device entirely. Compare this to other favorite games of mine, like Sin and Quake. Sin and Quake just run immediately on even the newest video cars without issue.
Opengl seems to have much better backward compatibility.
What DirectX does that OpenGL/SDL don't ...provides sound and frame sync. I could moderate in this thread (I have points), but no one had mentioned this crucial issue. Sure, if you are doing scientific visualization, you're going to use OpenGL, either on a Mac or on incredibly budget Linux-running white box hardware because you don't have the $ for anything else. But if you want to d games, it's important to have both the sound and the image (and haptic feedback, and anything else) synchronized. Same for using it for video playback or video chat. Apple goes out of its way to provide Apple-specific APIs for this, just as Microsoft provides DirectX, and the code you write using them is no more portable to other platforms than DirectX code is.
For very high frame rates, which are used to allow speculative pre-calcualtion and discard (i.e. pre-computing "the road not taken" in a multipathed decision tree, and throwing it away if a different road is taken), it's even more important to have the ability to combine work lists for speculative rendering along with audio etc. for the work, should it be used.
OpenGL is a graphics language. It's good at what it does, but it's not good at what DirectX does on top of that.
Disclaimer: I work for Apple, and yes, I'm making more or less positive comments about "DirectX vs. OpenGL" when considered for a particular use related to what the article author proposes to use OpenGL for...
-- Terry
Well, if you need any more proof of OpenGL's ability you can look at Wine's implementation of Direct3D all layered on top of Direct3D. Now, having said that, drivers are much more optimized for DirectX than for OpenGL and tend to render similar scenes quite a bit faster. Direct3D is also ahead of OpenGL in terms of technology.
----- obSig
if its on the iPhone its probably got more games sold than the Windows, Mac, Linux and XBox platforms put together.
Mobile (and web) is still the growth area for all development, if you target tired old Windows desktop apps, you're effectively working in a niche area that will see your skills obsolete over time. Microsoft is trying to defend that with C#/.NET but its still just a new way of doing the same old things.
At a guess he would work for someone like PopCap which means they develop fun popular games.
Congrats dimwit, all that valuable DirectX experience will possibly land you a job at some no-name PC only game company where you can put all that experience to work on a 20k selling FPS title or a job working on the dead Xbox 360 platform.
I have a fairly recent Graphics card (Nvidia 9600 GT), and twin 22" samsung monitors (50000:1 contrast, 2ms response). Not the latest & greatest, but not bad. OpenGL lives on my machine. I have OpenGL support. DirectX is proprietary. They won't support me. Since OpenGL is superior to directx, or at least equivalent, they could provide me with support, but they do not. There are a lot of games that use OpenGL, and a lot of other technology too. I've heard people who claim its an "also ran", but no, its the leader. Its the first one. The other is a johnny-come-lately. Microsofts play using directx is like its play for winsock. Everyone who knew anything about technology, 'knew' that TCP/IP was the superior protocol, but microsoft persevered. Their drivers and problems never ended till XP (when they finally ditched winsock). They tried to have Active Directory instead of LDAP (and they weren't first there either). LDAP is still the leader and better technology. Microsoft could have adapted it, but they insist on corralling people. I understand that microsoft is running a business, and forming a monopoly and locking in customers is part of their strategy, as is marketing proclaiming 'better than all others' on a constant basis, even without any basis in fact (marketing is the gentle art of fibbing). My applications use OpenGL without compromise. Compiz is the most advanced GUI in 2010.
Irrefutable, feel welcome to try.
- OpenGL works on Mac, Linux, WindowsXP and Direct3D does not (or only partially as in no DX11 for XP)
- OpenGL compatible APIs are present on the PS3, Wii, iPhone and many other devices, wheras Direct3D works on none of those.
- Cutting edge features can be accessed in OpenGL as they come out, whereas in Direct3D you'll have to wait until M$uck decides to iterate++ DX.
- A wealth of good online and dead tree documentation can be had for OpenGL
- A host of "killer apps" has been done and is continuing to be done with OpenGL (such as Maya, 3ds max, softimage, all iPhone games, Mac Games etc.)
Experiments and other stuff
More disposable pens are sold every day than premium cars in a decade. But guess which is more profitable.
"It's such a fine line between stupid and clever" -- David St. Hubbins, Spinal Tap
I exclusively use Windows for PC gaming. I could give two flying F's whether my game is developed in OGL or DX.
If more games were developed in OGL, they would be easier to port to other operating systems (or run under Wine)so you wouldn't need to use Windows anymore. That would save you a hundred bucks or so on a Windows license, or at the very least the need to reboot to play a game. That's got to be worth at least one flying F.
would this be modded as anything other than -1 Troll.
I do notice, with my own family, that my kids like to play many games on my wife's phone.
It would be interesting to find an accurate market share study of the popular games on phones, number of games installed, and which APIs were used.
Uh, Linux geek since 1999.
There is no example of this. Name one exclusive D3D game that can't be done with OpenGL.
Next you will be saying that the XBOX 360 is better than the PS3.
Why waste your time on a fruitless argument.
Life without Microsoft :)
Opengl is losing out to Directx because it suffers from the open mentality complex, where everyone gets to mess with everything and it results in much more difficult usage by the game studio guy who needs to sit down and write an engine in it.
Not.
DirectX has networking/input/graphics drivers? Then write those and attach them to OpenGL.
SDL and Allegro fit, but as others have pointed out, they need to be marketed better as designed specifically to work alongside OpenGL.
DirectX can be ported to Xbox? Fine; then get off your bony butt and go talk to Sony and Nintendo about enabling trivial porting of OpenGL apps.
First you'd have to convince Sony and Nintendo to make something like Microsoft's XNA Creators Club or Apple's iPhone developer program. Nintendo, for one, is vehemently opposed; its developer qualification page excludes businesses based out of homes and businesses working on their first title.
Exactly what I was thinking.
DirectX is for women.
Guess which API will be used for the next media hardware platform no one has heard about yet?
OpenGL
Doubt it, if it's a console. PS3 is the only console that supports OpenGL, but Sony learned their lesson this generation and I bet they won't be supporting OpenGL next time around.
So, yeah, go right ahead and keep babbling about how somehow OpenGL needs to 'prove' itself. DirectX is a dead end API to anyone except the fading Windows gaming market and teenage Windows only coders.
There's an elephant in your room called Xbox 360.
Anyway, enjoy touting your "real game developer" status. There are lots of us on the internet, and some of us know what we're talking about.
The *nix Analogue for DirectX is SDL. Not OpenGL.
The thing is, for a few years now, there needed to be an SDL 2.0 that made it as easy to integrate things like Nintendo's Wiimotes, Playstation controllers, and other things. But After all these years, we seem to be stuck on SDL 1.2.x - I don't know why. GTK+ moved on. Qt Moved on, what happened to SDL?
Everyone and their dog own a Windows PC.
Which has a tiny (e.g 13" to 17") monitor. Not everybody has a spare PC to connect to the TV and game on.
And the stupidest person of the day goes to you dipshit:
"Doubt it, if it's a console. PS3 is the only console that supports OpenGL, but Sony learned their lesson this generation and I bet they won't be supporting OpenGL next time around."
"Anyway, enjoy touting your "real game developer" status. There are lots of us on the internet, and some of us know what we're talking about."
LOL!
And what a surprise, it's a teen age Xbox fanboy...
How's it feel to how the biggest shit console in history loser? How's it feel to own a console that has been graphically humiliated by the PS3 loser?
It probably doesn't matter to the big game dev studios, but to the purists, OpenGL's cross-platform support is one of the biggest positives in my opinion.
As a Gamer/user, i say show me the beef! You want OpenGL to be used then make the uses/gamers want nothing else to use. Gamers are picky people and we don't mind spending money for top systems or what makes them go faster.look better,sound better. So if you make OpenGL a must have for the end gamer its lights out for DirectX. We gamers don't care about politics or OS wars only Subhuman wars he he:)
Jack of all trades,master of none
Now if someone came and blew Powerpoint away, sold the software for less-- you bet your ass Microsoft would start moving again.
The question is what move that would be. To judge by the past, they would, in order of feasibility: -
(Not comprehensive.)
All of this has happened before, and all of it will happen again.
(aka: Are you absolutely positive you are not new here?)
The disposable pens?
I agree that DirectX has lots of things going for it over OpenGL these days, but:
2) DirectX provides a lot more than just 3D drawing - sounds, networking, fonts, input processing, and it used to have an API for 2D graphics before (relevant because the story is about why DirectX gained marketshare)
That's a poor argument. OpenGL is only meant to be a rendering API. There are plenty of alternatives to do the other things, and moreover, there's nothing stopping using OpenGL with DirectX for the other aspects. You're comparing apples to oranges. If I want an API to do a specific job, it doesn't make sense to criticise it on other issues.
And doing 2D graphics via a separate API was a poor design decision that ultimately turned out to be the wrong way of doing things, and now they've had to go the 3D route, just like OpenGL did all along.
5) DirectX was easy to pick up, and everyone supported it. If it's easy to pick up for beginners, they'll learn it and continue using it later as a professional (the same thing as why Adobe doesn't really care about home users Photoshop piracy)
Was? Older versions of DirectX were a complete pain in the arse to pick up. Thankfully they've fixed it up so it's now as easy as OpenGL. But I'm not sure how it's easier?
The biggest reasons why DirectX is winning are not what you list:
* DirectX has a lot less legacy API lying around, due to the major changes that are made at each version. This means it's a lot easier for users to know what method they should be using to do things - it's a lot easier to hit the fast path.
* DirectX seems to generally have better driver support than OpenGL.
if its on the iPhone its probably got more games sold than the Windows, Mac, Linux and XBox platforms put together.
Citation needed, please?
Mobile (and web) is still the growth area for all development, if you target tired old Windows desktop apps, you're effectively working in a niche area that will see your skills obsolete over time.
There are plenty of Windows netbooks out there last time I looked. And if I was looking at mobile phones, I'd pick a platform that actually had market share, such as Java or Symbian.
FTA "What kind of bizarro world is this where engineers are not only going crazy over Microsoft's latest proprietary API, but actively denouncing its open-standard competitor?"
Overgrowth is an evolution of Lagura, which is linked on the webpage. If you you'd like to watch a trailer of Lagura, just grab the quicktime vids. Not OGG or x264 or XviD. -shrug-
Direct3D doesn't throttle performance to usable samples and doesn't have as technical a system to support this with 3rd-party modules like OpenGL allows.
OpenGL has it's priorities, original as an event for vendors to compete within, and that's why graphics driver vendors will always be an extension of OpenGL until an independent form makes it's way into a standard revision. Meanwhile, you have entire versions of DirectX that conceal the fact that their proprietary implementations of graphics standards not even standardized would compel the new release rather than an extension of that 1 of 15 packages (Direct3D) that induced that release. I'm not saying Direct3D is the graphics vendors, but they aren't building hardware to any one standard and have only been tempted by Microsoft with non-disclosure agreements in anti-competitive ways to work directly into.
OpenGL presentation of an X Server with multiple desktops to the dimension of the 3D object, is much better to use than Vista, Windows 7, Mac OSX Aqua, and because it's open-source it can be used by anyone that tries to compete against it.
Everyone but OpenGL is vendor lock-in. I remember when OpenGL was cross-implemented to use the existing acceleration libraries on the environment it ran rather than be tied with driver vendors as it is today, yet that is how much more flexible OpenGL actually is than Direct3D.
OpenGL/Glide anyone?
I couldn't find 'design1066' in the phone book. Googling didn't help, either.
I am working on a project at this very moment that started in Java. Sat on the shelf for a number of years, and when I decided to start it up again, made the switch to C. I wished I had not.
1) C documentation sucks at best. Examples are all of the same beginner print something in console type.
2) Not only does Java provide more than just programming constructs, even within the programming space it provides a lot more grunt code I have to do myself in C.
3) I use managed languages. I am not developing a game, I am developing business software (CAD/CAM related). Both C and Java currently suck in this respect. At least Java has Swing for GUI. C has no native (managed) Windows forms or WPF implementations.
4) Very relevant - for whatever reason, mind share is currently on Java - and from a community support perspective that is huge.
5) I was able to be productive in Java (where I started) enormously faster than C. Even now, I end up converting Java object-oriented code to imperative C most of the time, as opposed to finding a pattern that shows what I am trying to accomplish.
Almost undoubtedly the disposable pen market. The premium car companies are all dying. Mostly they've been bought up by the big auto companies. They are truly a boutique industry.
I'm glad you made the case for the GP.
Please tell me how many companies care about the niche market of 0.1% of Linux users? How many Linux games do you see? And don't even get me started how much bitching there would be if the "bad" companies wouldn't open source their games when releasing Linux versions.
It's not really about the 1% of desktop users that use Linux. What you are failing to note is that there is an awful lot of software written for mobile systems (read: mobile phones and iPod like devices that double as gaming platforms) and many of those systems run Unix like OS'es such as iPhone/iPod OS and Linux. Writing games for mobile devices is a growing market and portability is a key component if you want to make any kind of money since the world of Mobile operating systems isn't quite the Microsoft dominated monoculture that the world of Desktop OS'es is. If Android gains any kind of a foothold and iPhone OS keeps gaining market share (and there is no reason to believe they won't) I'd say OpenGL has a bright future, if only thanks to people developing for mobile devices. Also keep in mind that the most popular mobile phone OS is Symbian. Mind you I don't think Symbian owes much to Unix but it isn't made by Microsoft either. Symbian has an OpenGL port that is also the official Symbian 3D graphics API (according to Wikipedia). Now I'm sure people can bitch and moan about how mobile games aren't really as sophisticated as as PC games and I suppose that's true. Nevertheless it still cracks me up every time some bozo puts in a book review on a game development book on Amazon and goes on endlessly about how Direct3D is a "game development industry standard" and how "OpenGL is a dying technology". OpenGL is alive and well and likely to stay that way. The (mobile software developing) world is not Microsoft.
Only to idiots, are orders laws.
-- Henning von Tresckow
AutoCAD has supported Direct3D since February 2009. Here are the drivers: http://www.nvidia.com/object/autocad_pd_perf_drivers.html
It always surprises me when people mention AutoCAD as if it has stood still in the ten years they've used it since high school, while the rest of the CAD industry has charged ahead. Nontrivial, 3d geometry is well possible in AutoCAD today. It's no CATIA or UGS NX, but most parts in a car or aircraft can be modeled in AutoCAD with high fidelity today. Five to ten years? Good luck predicting ANYTHING in the software industry at that extent.
Let's not forget that OpenGL is still the choice of many university research projects and in the scientific visualisation markets. These projects tend to have a much longer shelf life than things like games. Also, Google's efforts in adding 3D to the web, WebGL, is an OpenGL binding to javascript.
www.rexguo.com - Technologist + Designer
you can argue that linux is a niche market, but Wii, PS3, Android, iPhone, AND windows hardly fall into that category
OpenGL and Direct3D are almost identical when it comes to features. And on high-end hardware OpenGL tends to do a little better because manufacturers can supply extensions for the new stuff, while with Direct3D you always have to wait for support. This is why OpenGL is always a few steps ahead of Direct3D, although if you plan to design a game that has to run even on average hardware, chances are the tiny feature differences between OpenGL and Direct3D don't matter. The main difference between OpenGL and Direct3D is the general design philosophy.
P.S. I've Googled quite a while to find any substantiation of your claim that "OpenGL is well behind", but there appears to be none. I suspect you're simply quoting MS marketing material.
Cant we all get along --Rodney King
I had higher hopes for the original article in discussing specific technical reasons for choose one API over the other aside from the issue of platform support.
From my perspective, the the controversy boils down to a handful of actual issues:
* Quality of drivers. D3D drivers have historically been more solid than OpenGL drivers on Windows. This is less of an issue these days with Nvidia. Unfortunately ATI OpenGL drivers remain a bit flaky.
* Market. I believe that the very high end graphics workstation market (think Hollywood CGI artists, CAD, etc) is still invested heavily Unix (Linux) based tools. Nvidia has a much bigger foothold in this market than ATI which explains why Nvidia has superior X.org drivers and better OpenGL support all around.
* Bleeding edge technical features, if you are trying to achieve some advantage in rendering quality over your competitors. This makes sense in the graphical arms race of gaming, but most of the rest of the visual simulation industry (3D modeling, CAD, scientific computing, government/military, etc) don't care about the cutting edge as much.
* What your 3D engine of choice supports. Writing a whole 3D engine from scratch is going to be silly most of the time with the many commercial and open source 3D engines now available, so you are not going to be writing a whole lot of bare D3D or OpenGL code.
Like a lot of other areas, Microsoft's development solutions work great if you stay in the Microsoft ecosystem. As a pure business decision sometimes it makes sense.
What irks people (including me) is when Microsoft deliberately or de factor freezes out the competition; this is where we end up with frustrating situations like the case of ATI having inferior support for OpenGL on Windows. There's no technical reason for it, just someone manager's decision on how to allocate developer resources. Longtime Linux users know this is a story that has played out with many devices; usually there is no technical reason a piece of hardware can't be used on Linux, it is simply a matter of the manufacture choosing whether or not to devote additional resources to supporting platforms other than the one with the biggest market share.
So ultimately it is about mindshare and putting pressure on Nvidia and ATI step up to the plate to have good OpenGL support, and encourage Microsoft it is not in their best interests to screw over Windows OpenGL users.
(did I mention enough times how much ATI OpenGL driver quirks annoy me?)
try irrlicht and you will forget about DirectX vs OpenGL and get everything portable. Have fun.
Presuming that the windows / xbox360 market will be the largest for longer than a decade from now is a dubious guess at best. With their business methods, it would not be surprising to see Windows fall drastically in market share in the near future, and at that point nobody will want to write software using this DirectX crap when they can write it in OpenGL and support the various OS's which span the majority of the market. That's all it takes, and Microsoft is slipping with every passing month. Windows 7 isn't good enough when you're still using anticompetitive actions to bully out competitors in any given market, until Linux is as viable as windows as a desktop platform for the "average user", Microsoft will enjoy the antitrust they've built and sustained in direct violation of multinational law. When that threshold is crossed, however, Windows is no longer the only thing most people will see as a viable thing to run on their PC, and being fucked time and time again by huge costs and inferior/buggy/exploitable microsoft-clone-of-X-software being forced upon you through packaging and windows updates, people won't give a second thought to moving, and the software companies will follow the consumers.
why not combine opengl, sdl, qt,etc into one package?
...
How the hell are you insightful? The OpenGL market owns the Smartphone industry. It's well on it's way in owning the game console industry. It own the highend CAD industry and Engineering modeling industry. It accelerates all OS X variants, it's becoming the defacto on Linux distributions where it makes sense, it's moving into the Web via WebGL and with the steadily eroding world around Microsoft is obviously doing well with the recent 3.1/3.2 updates and it's lovely new pal, OpenCL 1.1 being worked on has convinced all the GPGPU vendors that OpenGL/OpenCL is the one two punch for all Graphics.
You don't know how wrong you are. Why do you think premium car companies were bought by the big auto companies in first place? Because this shit is insanely profitable when you do it right (means making premium cars from cheap mass produced components).
Look at VW, they've got five premium brands now (Audi, Porsche, Bentley, Bugatti, Lamborghini).
"It's such a fine line between stupid and clever" -- David St. Hubbins, Spinal Tap
While you do make some good points, I think the Windows gaming market is far from fading.
I am not devoid of humor.
The primary reason why I decided not to use DirectX is because there is no DirectX on Linux, Mac or anything else that does not come with a Microsoft branded logo. Advantages or not, DirectX is a proprietary API which cannot be used on non Microsoft platform, other than by means of reverse-engineering it (a la WINE).
All the sexy babes want me... to fix their PC.
What? Microsoft DO stop people making a competing product. What do you think the moving the OGL out of Windows 7 does to OGL? How about patents? What are they meant to do? Suppress anyone's ability to produce something similar (software patents are patents on "what I want to do").
DX is ahead ONLY if you limit to Vista only. If you want XP and the XBox360, you need to use DX9 which is behind OGL in terms of technology. DX10 and OGL are equal in terms of technology, with some areas ahead and some behind.
So no. You're wrong. Unless you want to write games for Vista ONLY.
Comment removed based on user account deletion
"I believe it was actually correct at some point in the rather distant past, when g++ vtable order was different from the one used by VC++ (and COM), so you had to work on C level to get everything right." - by shutdown -p now (807394) on Friday January 08, @05:58PM (#30701486)
Well, then it'd have to be before Delphi 2 (which "came around" iirc, in the year 1996/1997) & VB5 (same year(s) iirc), because Delphi could do MOST ANYTHING MSVC++ can do (save multiple inheritance on object/class superclassing), and VB's "AddressOf" (which allows access to callbacks, which are nothing more than "function pointers" to returns from external libs (e.g. like for API work), or, even other internal subroutines/functions/methods in VB itself, iirc).
(I state that, because I was using OpenGL &/or DirectX display work with Delphi 3 + MSVC++, circa version 5.0 iirc (never tried it w/ VB though) back then, again doing screensavers (to 'dabble with' doing 3D display methods to the screen device context) back then, after all, & it worked).
SO, that all "said & aside"? Well, If what you stated is correct, & you sound pretty confident in your statements (and your replies are technically quite accurate too, so I tend to think you probably are)? Then, that'd make what you said PROBABLY TRUE about say, DirectX 3 (which was what was in Windows NT based OS, circa NT 4.0 & below iirc).
(All in all? Good discussion with you imo! It NEVER hurts to learn some more "historical esoterica" though... "live & learn" (more) is/was the case here for me @ least)...
APK
P.S.=> Thus, it's been a pleasure having this exchange with you!
And, by the by: You're one of the FEW here on this particular forums that seems to have a really good grasp of "things programming" (not many folks here tend to in my experience (as most seem to be more "network engineer" oriented)), but around here, WHEN they do? THEY SURELY DO!
That to myself @ least, is always pleasant to see/hear imo @ least - I can learn more by it myself is why I state that... apk
The reason was, that OpenGL did lack modern features. Which was true back then.
BUT. OpenGL now has caught up. And it has one huge advantage: Extreme cross-platform capabilities.
You can even use OpenGL ES (a light version) on all modern mobile phones.
Runs on Linux and Mac without hassle. And on consoles. Mobile ones too.
With GLSL, there’s no excuse anymore.
I mean, come on! That all has got to be an advantage!
I see no reason to succumb to lock-in and learn the tricks of a whole new API, just for a (now) imaginary advantage.
Any sufficiently advanced intelligence is indistinguishable from stupidity.
No offense. I guarantee that since your company supports so many platforms you develop useless shit that nobody cares about. No mainstream dev house supports that much shit. I'm sure all your supposed games suck.
not everyone plays multiplayer games.
I play multiplayer games, and I want to make multiplayer games. I'm just bitter that there isn't a demonstrated market for a multiplayer game that doesn't require a $2,400 machine (a LAN of four gaming PCs with four low-end LCDs) and isn't made by a large business (console developer qualification).
And even in the good old Doom 1 times people somehow managed to bring their pcs to their friends to play over a humble null modem cable.
ESRB.org says Doom and Doom II were rated M on all platforms other than GBA, and M-rated games are designed to be played by people who are old enough to afford their own PC. But a lot of people, especially people who are too young to have graduated from high school, don't have their own gaming PC.Nor can a mom afford $160 for four copies of a multiplayer PC game compared to $60 for one copy of a console game. This brings me to another point: because PC games from the Doom era used software rendering, minimum system requirements were easy to understand: "25 MHz i486SX, 4 MB of RAM, VGA, MS-DOS." Nowadays, even a new PC often won't run new games because they tend to come with a Voodoo3-class Intel GMA, which appears to use half the CPU for vertex shading.
I prefer open standards, but unfortunately OpenGL is proof that design by committee doesn't work. There was a lot of negative discussion when infamous OpenGL 3.0 API was released: http://www.gamedev.net/community/forums/topic.asp?topic_id=504547
Also this video is quite a laugh: http://www.youtube.com/watch?v=sddv3d-w5p4
So I guess your idea of multiplayer is competing to see who can get a higher score or earlier completion on the single-player portion. Is this view common?
Comment removed based on user account deletion