Become a fan of Slashdot on Facebook

 



Forgot your password?
typodupeerror
×

Why You Should Use OpenGL and Not DirectX 515

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.'"
This discussion has been archived. No new comments can be posted.

Why You Should Use OpenGL and Not DirectX

Comments Filter:
  • by sopssa ( 1498795 ) * <sopssa@email.com> on Friday January 08, 2010 @04:31PM (#30700382) Journal

    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.

    • by Alcimedes ( 398213 ) on Friday January 08, 2010 @04:34PM (#30700416)

      So if they tighten things up they'll be better able to compete?

    • Re: (Score:3, Interesting)

      by HermMunster ( 972336 )

      If Windows didn't have these technologies used to prop it up we'd have far less Windows in the world, which, in many ways would be the greatest thing for the consumer and the industry (as far as innovation and progress goes). Without DirectX propping up the monopoly we'd have other technologies and far more companies that would provide innovative competition, thus providing more, and often better, products.

      We know that when you have a large number of competitors you get better products. The eReaders are a

      • by Blakey Rat ( 99501 ) on Friday January 08, 2010 @04:43PM (#30700516)

        Without DirectX propping up the monopoly we'd have other technologies and far more companies that would provide innovative competition, thus providing more, and often better, products.

        Then instead of ranting about DirectX, why don't you put your money where your mouth is and make a competitor for DirectX?

        I'm sick of open source buck-passing. Sure, it's terrible that Microsoft has such a commanding monopoly in so many areas, but on the other hand, why are you complaining about it instead of actually working to make it go away?

        For every one of those bulletpoints the parent mentioned, there's nothing, nothing stopping you from providing a similar level of support for OpenGL.

        DirectX has networking/input/graphics drivers? Then write those and attach them to OpenGL. DirectX has better documentation/examples? Then create them for your OpenGL solution! 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.

        Sorry, I just get sick of the whining by anti-Microsoft goons who don't have the cojones to actually compete with Microsoft-- stop passing the buck and do it already.

        • by msclrhd ( 1211086 ) on Friday January 08, 2010 @04:57PM (#30700698)

          OpenGL is a graphics-specific API (like Direct3D). If you want sound, network, etc. support, try SDL or Qt.

        • by SanityInAnarchy ( 655584 ) <ninja@slaphack.com> on Friday January 08, 2010 @05:02PM (#30700754) Journal

          make a competitor for DirectX?

          DirectX is a combination of several not-entirely-related technologies. The graphics component is Direct3D, and the stupidly obvious competitor is OpenGL.

          why are you complaining about it instead of actually working to make it go away?

          Because OpenGL is already better, as TFA explains. The problem is purely a marketing one, and requires a marketing response. The marketing response sounds like "complaining", but is actually encouraging people to think and explore their options.

          DirectX has networking/input/graphics drivers? Then write those and attach them to OpenGL.

          The result is called SDL. Again, these have already been done, they just aren't part of one giant marketing package, largely because they don't necessarily have anything to do with each other. For example, OpenGL powers my compositing window manager at the moment, but it really doesn't need to make any sound.

          DirectX has better documentation/examples? Then create them for your OpenGL solution!

          Fair enough.

          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.

          What makes you think the author of TFA hasn't done so? Indeed, what makes you think they would listen to the GP at all?

          But FYI, PS3 and Wii both include a form of OpenGL, though there are differences.

          Sorry, I just get sick of the whining by anti-Microsoft goons who don't have the cojones to actually compete with Microsoft-- stop passing the buck and do it already.

          I understand what you're saying, but if it was that easy, we'd have done it already.

          Whining is not mutually exclusive with doing something about it.

          • by Anonymous Coward on Friday January 08, 2010 @05:57PM (#30701466)

            Because OpenGL is already better, as TFA explains.

            Except that OpenGL is NOT better. It may have support for vendor's random GPU features, but technical features alone do not make for a better product.

            From the Article:

            On Windows, it's a fact that the DirectX graphics drivers are better maintained than the OpenGL graphics drivers.

            Similarly, it's a fact that more gaming graphics programmers know how to use DirectX than OpenGL, so it's cheaper (less training required) to make a game using DirectX than OpenGL.

            Microsoft has worked hard on DirectX 10 and 11, and they're now about as fast as OpenGL, and support almost as many features.

            I prefer DirectX because it has better development support, a better development environment, an integrated complete game package, and provides nearly the same speed and functionality as OpenGL. Yes, I've experimented with SDL and did not like it.

            The Article also gets one thing wrong:

            However, there's one big problem: they don't work on Windows XP!

            This is inccorect. DirectX 10 does work on Windows XP, it is just not officially supported by Microsoft.

            • Re: (Score:3, Insightful)

              technical features alone do not make for a better product.

              That's true, and I'd suggest you read an article (by the same developer) about why you should support Mac, and even Linux. Lugaru arguably wouldn't be the success it is without its Linux fanbase.

              So the only real answer there is to either use GL, or wrap it all in enough abstraction that you can actually port it. TFA makes that point, too -- that in any decent engine, you're already abstracting it to the point where it really doesn't matter what the low-level API looks like, any more than I care what ATA cal

            • Re: (Score:3, Informative)

              by BikeHelmet ( 1437881 )

              Except that OpenGL is NOT better. It may have support for vendor's random GPU features, but technical features alone do not make for a better product.

              It has its pros and its cons.

              Up until 2007, these were the pros:

              • Superior performance
              • Superior image quality

              These still are:

              • Superior cross-platform support

              I prefer DirectX because it has better development support, a better development environment, an integrated complete game package, and provides nearly the same speed and functionality as OpenGL.

              Good reasons. Now, if you were developing a game for three consoles, Windows, OSX, Linux, and phones, then you'd probably want to go with OpenGL. Either that or face nasty dev time.

              As soon as you pass 2 target platforms, OpenGL is the better solution.

              This is inccorect. DirectX 10 does work on Windows XP, it is just not officially supported by Microsoft.

              And this is incorrect. The Alky project went down. It was never a complete implementation. Most of the featu

          • Re: (Score:3, Interesting)

            by jpmorgan ( 517966 )

            OpenGL? Better? Sure, it was once. And it was going to be better than DirectX again, with the release of OpenGL 3.0. But then the Khronos group scrapped the Long Peaks draft to appease the CAD companies. Yes, there are extensions and with vendor specific extensions, OpenGL can do everything Direct3D can today. But after how many GL_NV_* extensions does OpenGL stop being a cohesive API?

          • Re: (Score:3, Insightful)

            by AmiMoJo ( 196126 )

            But FYI, PS3 and Wii both include a form of OpenGL

            And that is why this argument is largely irrelevant. Games cost so much to produce now that it's almost mandatory for them to come out on at least PS3, 360 and Windows. Wii tends to get left out due to it's relatively low graphics performance. The point is that any game dev is probably going to have to support both DirectX and OpenGL/PS3 libraries.

            Most game engines do that by abstracting the rendering stuff in such a way that it can use Direct 3D or OpenGL.

          • by Prune ( 557140 ) on Friday January 08, 2010 @07:04PM (#30702346)
            SDL has a number of problems and we've dropped it from our projects. It is definitely not performance oriented; for example, calls to WaitForSingleObject in the Windows port even when it can be determined that no blocking is necessary, and thus wasting 4000 cycles on a kernel call instead of 200 on an interlocked instruction. That's just one random example that came up when we were troubleshooting performance. Note that I'm not at all ranting against using other libraries, and I'm generally sour to DirectX. It's just that SDL is a mediocre example for anything other than input handling. For threading, pthreads works great for both Linux and Windows (the Windows port is much better optimized than SDL threads), or even better yet from a software engineering perspective, boost threads can be used. In a high performance optimized to a given engine architecture, a custom thread library with custom task scheduling etc. is the real choice, and would written at a lower level than these libraries, with OS primitives and interlocked instructions. With networking, there is a huge amount of libraries out there that are optimized for various tasks better than SDL Net, and for sound OpenAL is the obvious choice (using libavcodec/ffmpeg for decoding).
        • Re: (Score:3, Insightful)

          by v(*_*)vvvv ( 233078 )

          Buck passing is done when said. Everything else is easier said than done.

          Being Microsoft helps. Many of Microsoft's achievements have been by just being a mammoth Goliath monopoly. But that is them just doing their job. If you can't innovate, then gather an army and go to war. Only lawyers can tell you what you can and can't do.

          Innovation at Microsoft is a plus, but not a requirement. The substance of their products is only part of the very large picture.

      • by sopssa ( 1498795 ) *

        I don't think it would create that much more competition. 3D API's and libraries and things like these take a lot of work, and require support from graphics cards manufacturers (which there are basically only two, ATI and NVIDIA). It would be out of the question they would implement 10+ different codebases on their cards.

        DirectX is actually up for competition, even if it's not in PC space. DirectX is the supporter of PC gaming and it competes against Playstation and Wii, and PS3 is definitely up to par in c

      • Re: (Score:3, Insightful)

        which, in many ways would be the greatest thing for the consumer and the industry (as far as innovation and progress goes).

        What industry? If you mean the 3D "market," I disagree. Having a large number of very different systems (e.g., let's just take Linux for example, drivers that work in one distro don't always work in another) does not necessarily help innovation and progress. Having a stable/typical setup helps, as you can focus in more on your product than worrying about whether or not it will work on all these different platforms/drivers/whatever. Unless we're talking about different industries, here.

        As it is, I would

        • by n8_f ( 85799 ) on Friday January 08, 2010 @06:07PM (#30701592) Homepage
          Sure, you could have an "open standard," but someone is controlling that, too.

          No, that is why it is an open standard. Once it is out there, anyone can implement it and conform to the standard. Maybe someone maintains it and maybe someone is working on the next version, but no one controls it. To illustrate the difference, what platforms does DirectX run on? Microsoft Windows, Microsoft Xbox, and Microsoft Windows Mobile. Notice the pattern? And what platforms does OpenGL run on? All of those plus dozens or even hundreds more. If you want to port your app to the iPhone or the Palm Pre or an Android phone, who is going to have to do more work, the person with the app programmed in DirectX or the person with the app programmed in OpenGL? That is the advantage of an open standard.
      • by timmarhy ( 659436 ) on Friday January 08, 2010 @05:11PM (#30700870)
        instead of whining about MS's success, why don't you all go out and beat directX at it's own game - an easy to use 3d gaming API. openGL is NOT as easy and thus more expensive to write games in.

        if all these people wrote code instead of rants you'd be a little closer by now.

      • Re: (Score:3, Interesting)

        Microsoft is not stopping any one from creating competitors to DirectX. Just nobody has created something of the same caliber - you're free to create something with more power, better documentation, more flexibility then directX. OpenGL has failed to so far, that's not Microsoft's fault. Use DirectX in your development and with less effort realism is added into games, less effort for sounds etc, and there are plenty of examples and very high quality documentation. (openGL documentation doesn't come close)
    • by pyalot ( 1197273 ) on Friday January 08, 2010 @04:46PM (#30700546)
      1) completely bogus: OpenGL has an both a good documentation and extremely good literature
      2) completely bogus: These days M$ is advocating *not* using anything Like DirectInput, etc. In fact, DirectSound doesn't even work on Windows7
      3) completely bogus: If you're not doing C#/C++ on Visual Studio using Com+, you're not getting DirectX. OpenGL can be coded in anything, Delphi, Python, C (gcc), C++, perl, Ruby, etc.
      4) The only thing you got right, remotely
      5) completely bogus: Before version 9 or 10, DirectX was the most hard and retarded thing to pick up, then it slowly, very slowly, got better.
      • I would mod you up, but I've already posted. I agree with everything you have said.

      • Re: (Score:2, Informative)

        by sopssa ( 1498795 ) *

        3) DirectX works just fine with C/C++/Delphi. I have used it with all of those, from version 6.
        5) Not really. I'm not even a game developer myself, and I was a teen at that age, but version 6 of DirectX was really easy to pick up. And I used it with Visual Basic and Delphi, because frankly C/C++ was pain in the ass to quickly create something fun as a 12 year old. And so did games too - only games supporting OpenGL was those based on Quake engine, and even they had DirectX engine too (HL did at least)

      • by Nadaka ( 224565 ) on Friday January 08, 2010 @04:57PM (#30700694)

        I would also point out that there are open standards for networking, input and sound. They just are not all bundled up under a single name.

      • by shutdown -p now ( 807394 ) on Friday January 08, 2010 @04:59PM (#30700722) Journal

        If you're not doing C#/C++ on Visual Studio using Com+, you're not getting DirectX. OpenGL can be coded in anything, Delphi, Python, C (gcc), C++, perl, Ruby, etc.

        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. DX isn't even "COM", it just uses COM conventions (vtable layout, refcounting etc) - but it's not a set of proper registered COM objects. In particular, this means that you absolutely can write DX applications using gcc [blogspot.com] (e.g. Mingw, on Windows), and even g++, since its vtable layout is (by design) COM-compatible.

        Furthermore, there are plenty of high-level DX wrappers for various other languages: Delphi and Python from your list have them for sure, and there are many more (just google for "directx language").

      • Re: (Score:3, Informative)

        by trifish ( 826353 )

        DirectSound doesn't even work on Windows7

        Where did you hear that? Because, that's nonsense (or, as you say, complete bogus).

        • by TheRaven64 ( 641858 ) on Friday January 08, 2010 @05:36PM (#30701226) Journal
          I'm not sure about 7, but the Vista driver model disabled the hardware acceleration path in DirectSound. If you want hardware accelerated sound then you need to use OpenAL on Vista, not DirectSound. This irritated Creative Labs a lot, but considering the fact that they insist on putting buggy crap in ring 0 on any platform that they provide drivers for, they probably deserved it.
      • by moderatorrater ( 1095745 ) on Friday January 08, 2010 @05:57PM (#30701464)

        1) completely bogus: OpenGL has an both a good documentation and extremely good literature

        It's nice that you think so, but I've seen the documentation for both, and I much prefer the directx documentation. You are, in fact, helping to prove the GP's point: when Microsoft hears from a developer that their documentation sucks, they'll work on it and improve it. When open source people hear that something sucks, they insult the user and stick their heads back in their asses.

      • by Spiked_Three ( 626260 ) on Friday January 08, 2010 @06:29PM (#30701884)
        Not bogus at. I am working on a project at this very moment that started in DirectX. Sat on the shelf for a number of years, and when I decided to start it up again, made the switch to openGL. I wished I had not.
        1) openGL documentation sucks at best. Examples are all of the same beginner draw a triangle type.
        2) Not only does directX provide more than just graphics, even within the graphics space it provides a lot more grunt code I have to do myself in openGL.
        3) I use managed languages. I am not developing a game, I am developing business software (CAD/CAM related). Both openGL and DirectX currently suck in this respect. At least directX has XNA for games. OpenGL has no native (managed) Windows forms or WPF implementations. If I was developing a game, XNA is the easy choice. But since I am developing a business app, I live with stale dead third party libraries (TAO in this case).
        4) Very relevant - for whatever reason, mind share is currently on DirectX - and from a community support perspective that is huge.
        5) I was able to be productive in directX 8 (where I started) enormously faster than openGL. Even now, I end up converting directX code to openGL most of the time, as opposed to finding openGL code that shows what I am trying to accomplish.

        Like I said, I wished I would have stayed with DirectX. If and when this project gets completed I will never use openGL again unless they provide better managed language support , better documentation and better built in functionality. I get tired of passing in integer values to set parameters. When I want to set a light color I want to call SetLightColor(Color), not setSomeParamater(12, 15); It makes for unreadable and unmaintainable code. I know, there are those who still think C is great, and they write some of the ugliest code on the planet, let them collect in the a little tiny small group for all I care.
    • by HermMunster ( 972336 ) on Friday January 08, 2010 @04:47PM (#30700558)

      The rant is no more of a rant than you find closed source rant about regarding open source.

      And, the updated spec for OpenGL had glorious ideas but somehow they fell through. Then Microsoft decided they'd cancel support for OpenGL in Vista/Win7 (yay, way to compete -- try to kill a solid viable product used by so many).

      OpenGL still has a bright future as soon as they can complete what they promised.

    • As long as OpenGL continues to support the newest features first through extensions, there will always be a place for it.

      For a long time, OpenGL was used in industrial and visualization applications. It wasn't designed specifically for games, hence why it was never developed into a fully featured multimedia library. This article very well articulates the fact that OpenGL is available on quite a lot more devices than DirectX and for any cross platform developers, this is extremely important.

      I don't see OpenG

    • by jfbilodeau ( 931293 ) on Friday January 08, 2010 @04:49PM (#30700580) Homepage

      Corrections/clarifications

      1) So does OpenGL
      2) True -- Let's talk Direct3D vs OpenGL
      3) False -- Name me one language that doesn't have OpenGL bindings
      4) The 360 has a DirectX-like API. OpenGL-like interfaces is used on Wii and PS3
      5) OpenGL is easy(er?) to pick up

      • Re: (Score:3, Funny)

        False -- Name me one language that doesn't have OpenGL bindings

        Well, we couldn't find any for INTERCAL (we also use Brainfuck for low-level optimization of critical code sections). Meanwhile, D3D APIs literally blend right in! ~

        OpenGL is easy(er?) to pick up

        On a serious note, this one is arguable. I will concede that it's much easier to write a simple 3D application in something like SDL+OpenGL, because of many sane defaults. However, if you try to get it even to the level of a hobbyist but not horribly outdated game engine, the amount of complexity quickly increases for OpenGL as well. I'm not an

      • by TheRaven64 ( 641858 ) on Friday January 08, 2010 @05:38PM (#30701260) Journal

        5) OpenGL is easy(er?) to pick up

        It used to be, with the fixed-function pipeline. Unfortunately all of the easy bits were deprecated with 3.0 and removed with 3.1 (fortunately people like nVidia then re-introduced them all as extensions). OpenGL 3.1 is incredibly powerful, but I wouldn't describe it as easy.

    • by Anonymous Coward on Friday January 08, 2010 @05:00PM (#30700738)

      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.

      • Re: (Score:3, Insightful)

        by design1066 ( 1081505 )
        Said the anonymous coward
    • by Synchis ( 191050 ) on Friday January 08, 2010 @05:17PM (#30700952) Homepage Journal

      The interesting part of your whole argument is that you completely ignore the fact that both Wolfire and ID Software do more than just rant about it.

      They develop games that support OpenGL. What they want, is *other* big developers to stop supporting the inferior libraries and open their eyes.

      Plan and simple: There is nothing bad about Open standards.

      - If they are broken, you can fix them.
      - if they lack features, you can add them.
      - If the performance is poor, you can improve it.

      Can you say this about Direct3D? The only entity that can fix, add to, or improve Direct3D is Microsoft. Period.

      - If its broken, you have to wait for a patch.
      - If it lacks features, you have to wait for the next version, and pray that it supports your operating system.
      - If the performance sucks, you have to deal with it.

      Whats good about that? And thats talking a strictly Windows audience.

      From a cross platform point of view, there really is just one choice. And its not Direct3D.

      • by RightSaidFred99 ( 874576 ) on Friday January 08, 2010 @05:42PM (#30701314)

        What rubbish. The simple fact is that on the highest end hardware DirectX supports more features. OpenGL is well behind now. The original somehow turns Direct3D's deficiencies a decade ago into a reason for modern game developers not to use it. Yeah - that makes sense.

        OpenGL is a better choice for cross-platform development. It's not a better choice for high end game development on Windows. In fact it's a worse choice. Period.

        It's just more false choice syndrome. Use OpenGL where it makes sense, and use DirectX where it makes sense.

        • Re: (Score:3, Interesting)

          by ratboy666 ( 104074 )

          It's not a race. If software is written to a standard, there is an expectation that it can be moved to other platforms by simply recompiling.

          The platform can then be chosen to meet the customers needs.

          To give an example: A large company was using workstations made by ***, but were afraid that *** was going out of business. They then rebuilt the application to work on desktop systems made by **** utilizing graphics cards from ***** and ******. Since the applications used OpenGL for rendering, the move was si

      • Re: (Score:3, Insightful)

        by geekoid ( 135745 )

        The whole point of getting a package is so you don't have to dick around with it.

    • Re: (Score:3, Informative)

      by Ralish ( 775196 )

      Conspicuously absent from the article is John Carmack's more recent praise of DirectX, instead opting for far older quotes from him that reference versions of DirectX that are now either obsolete or at the very least superceded; in particular:

      In January 2007, John Carmack said that "DX9 is really quite a good API level. Even with the D3D side of things, where I know I have a long history of people thinking I'm antagonistic against it. Microsoft has done a very, very good job of sensibly evolving it at each step—they're not worried about breaking backwards compatibility—and it's a pretty clean API. I especially like the work I'm doing on the 360, and it's probably the best graphics API as far as a sensibly designed thing that I've worked with."

      I don't know if it is the best graphics API mind you, but few would dispute Carmack's graphics programming credentials, and the above quote paints a somewhat different picture of his (modern) views on the API than the linked article.

      Source: Comparison of OpenGL and Dir [wikipedia.org]

  • by WilyCoder ( 736280 ) on Friday January 08, 2010 @04:38PM (#30700452)

    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.

    • by WilyCoder ( 736280 ) on Friday January 08, 2010 @04:43PM (#30700508)

      I know its taboo to respond to oneself, but I forgot to mention the recent release of the GL books (red and orange) adequately display the state that GL is in. They STILL do not have geometry shaders in the standard, and its freaking 2010! Yes, you can use those shaders via extensions, but anyone who recommends that path has not been personally burned by vendors supporting extensions to different levels. Writing code that uses extensions that only work on Nvidia and not ATi (or vice versa) is NOT what GL is about!
       

      • by Anonymous Coward on Friday January 08, 2010 @04:59PM (#30700728)

        You are not up to date then. OpenGL 3.2 has it in the standard.

      • Re: (Score:3, Interesting)

        by Sycraft-fu ( 314770 )

        That's a problem that OpenGL seems to perpetually have, they are always playing catchup with cards. Graphics cards do something new, OpenGL takes a long time to get a proper implementation of it because they claim "Oh you can just use extensions!" Meanwhile, Direct3D is always on the cutting edge. Why? Well because MS works with the graphics card vendors. It is a two way process: MS tells the GPU vendors "These are the kind of things we want to put in the next generation of DX," graphics companies say "Thes

  • by Anonymous Coward on Friday January 08, 2010 @04:40PM (#30700466)

    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.

    • by shutdown -p now ( 807394 ) on Friday January 08, 2010 @04:50PM (#30700606) Journal

      I have posted this citation by Carmack in a comment on recent article on DX11, but it seems to be very much relevant here as well, so I'll re-post it - especially as TFS mentions Carmack's opinion circa 1997 (which favorably matches with the point of the article), but conveniently omits the more recent comment. Here it is:

      "DX9 is really quite a good API level. Even with the D3D side of things, where I know I have a long history of people thinking I'm antagonistic against it. Microsoft has done a very, very good job of sensibly evolving it at each step—they're not worried about breaking backwards compatibility—and it's a pretty clean API. I especially like the work I'm doing on the 360, and it's probably the best graphics API as far as a sensibly designed thing that I've worked with."

      • by Xest ( 935314 ) on Friday January 08, 2010 @05:06PM (#30700812)

        This is really it, the summary almost sounds like a complete troll.

        OpenGL didn't lose out because of Microsoft's marketing, it lost out because whilst OpenGL stagnated, DirectX grew and grew to become a completely unified games development framework. Carmack may have had a point 12 years ago, but whilst OpenGL development completely ignored criticisms, Microsoft took criticism from the likes of Carmack on board and improved performance of their API whilst adding new features, providing great documentation and tidying up the interface.

        Citing an argument from over a decade ago is desperate to say the least.

        OpenGL needed to become something more, it needed to become part of a unified game development library in itself- we had part of that with OpenAL but it needed everything, we simply need an Open Multimedia/Gaming framework that can do everything that DirectX can do.

        The fact is, game development requires more code and more content than ever before, developers can simply no longer justify spending time on filling in the gaps when other libraries like DirectX already have those gaps filled.

        I would love nothing more than a resurgence of a set of open libraries covering the various facets of game development like DirectX does because it'd mean near zero effort porting to Mac and Linux, but right now the extra effort required to use OpenGL and OpenAL and then fill in the other gaps yourself coupled with the additional support requirements just doesn't justify the relatively minimal extra userbase for many developers.

        • by shutdown -p now ( 807394 ) on Friday January 08, 2010 @05:18PM (#30700968) Journal

          whilst OpenGL development completely ignored criticisms, Microsoft took criticism from the likes of Carmack on board

          That kind of feedback is actually formalized - there's a committee called Microsoft DirectX Advisory Board. I'm not sure whether Carmack is on it, but e.g. Tim Sweeney (the Unreal guy) is, judging by one of his interviews.

          I don't know how much influence that board has over DX design, however ("advisory" in the name gives a hint, but there is still a wide range of possibilities). Would be interesting to know. Could it be that D3D9 was a significant leap that Carmack claims it to be precisely because of heavy participation in its design by people who actually use it?

      • Re: (Score:3, Informative)

        Maybe that's Carmack's "more recent comment", but the article mentions even more recent comments (at least, I assume they're more recent, since they mention DX10 and Rage).
        From the article, Carmack said:

        "Personally, I wouldn’t jump at something like DX10 right now. I would let things settle out a little bit and wait until there’s a really strong need for it."

        And:

        As John Carmack said when asked if Rage was a DirectX game, "It’s still OpenGL, although we obviously use a D3D-ish API [on t

        • Re: (Score:3, Insightful)

          by Xest ( 935314 )

          Your former quote is simply because DX10 is Vista/Windows 7 only, the reason he's not using it is not because he has a problem with it, but because DirectX 9 is adequate for his requirements and still allows him to support XP. It's completely wrong to assume that avoiding DX10 means using OpenGL- I'm not sure if that's your insinuation by quoting this, but what it means is that his preferred DirectX version is 9 as it is with most developers, because XP still has a big enough userbase to simply not ignore i

    • by GooberToo ( 74388 ) on Friday January 08, 2010 @05:06PM (#30700818)

      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.

      I find that hard to believe. Right now there is a new renaissance in game development and game platforms. Mobile platforms are just now grabbing noteworthy market share and it looks like its only continuing to grow as more mobile devices increase in capability - especially 3d capabilities. Thus far that segment has clearly spoken. Thus far this segment is OpenGL and/or OpenGL ES. And that's entirely his point. You want to chase an emerging market plus cover all other platforms, you have exactly one option - OpenGL.

      If you develop via OpenGL you can address XP+Vista, Mac, Linux, iPhone, and Android, plus all the major consoles. Its one stop shopping. With DX and comparable graphics with OpenGL, you can only target Vista. If you want Vista + XP + Consoles, you're looking at DX9 which is a subpar graphics experience compared to that which is provided by OpenGL. Simply put, OpenGL provides you more platforms more easily.

      We most certainly have not reached any critical point which can not be reversed. As the author clearly points out, OpenGL vs MS is much the same today as it was in the past. At this point, its strictly about mind share and that needs to change.

      Much is said that OpenGL is less than DX, and that's true. But people seem in a hurry to ignore the fact that there is a standardize solution which is OpenGL/OpenAL/OpenSL/SDL. When game developers talk about OpenGL as a solution, they really mean all four. OpenGL has a complete solution which addresses both CAD and gamers alike. The only questions is, are companies smart enough to realize this - far too often, its seems not because of the MS marketing. And as I've said many times before here, MS is not so much a technology company as they are a marketing company. Generally speaking their technology is second rate, but their marketing and business prowess is world renowned. All too often people confuse the facts.

      Ultimately, the problem is that the PHB making the technology decision is simply unaware of the poor MS-centric decision they are making, which is then costing them additional dollars to later turn around and target the platforms they specifically excluded themselves from by picking DX in the first place. OpenGL needs to be championed by someone that understands how to speak PHB so that OpenGL can be fairly evaluated. Right now the only contender who is whispering into the PHB's ear is MS, and as a result, everyone is losing.

      • by andy55 ( 743992 ) on Friday January 08, 2010 @06:23PM (#30701800) Homepage
        It doesn't sound like you've developed much in the way of commercial quality graphics-centric software for "middle tier" end-users.

        Long story short is that if you ship a 3D software title that's designed and marketed to be run on as many machines as possible, modern OpenGL drivers tend to greatly lag or be unavailable on many Windows machines. Vista and especially Vista 64 really made this worse since maintaining and upgrading GL drivers for middle tier GPU hardware is generally at the bottom of the priority list for 3D driver development. Meanwhile, D3D support tends to be solid, speedy, and well maintained considering especially when you consider what hardware they have to work with.

        I'm a senior engineer at a software company that manages a cross-platform codebase that puts OGL and D3D under the same roof (we ship products for OS X and Windows). One of our older products requires OpenGL on Windows due to not wanting to rewrite all its shaders for D3D, and the number of support tickets that we get from that TOWERS our the number of support tickets from our other D3D titles combined. It's downright pathetic how poor OpenGL hardware and driver support is on these middle tier Windows machines.

        The last thing the guys and Intel and Nvidia that maintain the drivers for built-in chips that go on the typical Dell machine give a crap about are the state of their OpenGL support. I'm typically surprised to see them have support past 1.3.
  • There's nothing around it; OpenGL desperately needs a killer app.

    Show people something amazing and tell them "OpenGL did This."

  • by bistromath007 ( 1253428 ) on Friday January 08, 2010 @04:54PM (#30700662)
    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.
  • I've used both (Score:3, Informative)

    by shadowrat ( 1069614 ) on Friday January 08, 2010 @04:56PM (#30700688)
    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.
    • Re:I've used both (Score:5, Interesting)

      by oGMo ( 379 ) on Friday January 08, 2010 @06:00PM (#30701510)

      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.

      Please RTFA. Also, Chris Hecker's [chrishecker.com] article, linked from TFA. Then give us specific, technical reasons that DX/D3D is somehow better for games than OpenGL. Your post is filled with assertions, but with nothing to back them up. It's pretty sad that got moderated "informative".

      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.

      Again, RTFA. Give specific, technical reasons that OpenGL is "harder" than D3D. If you'd bothered to read Carmack's position, his favoring of GL was because GL is easier. Your inability to deal with OpenGL putting your claims in doubt aside, you could at least be specific about the reasons. As per Chris Hecker's article, the only one making these claims are Microsoft evangelists. You wouldn't happen to work for Microsoft would you?

      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.

      This is a bit disingenuous. All of the articles involved are addressing the 3D aspect of DX. The rest of the stuff is either trivial (use SDL or similar which is about the simplest API you could imagine, has a billion support libs, and runs on everything), or you'd be doing it by hand anyway (implement your own networking stack for performance, a la EVE). Your point is therefore irrelevant.

      anyway modern game development means licensing an engine. engine developers worry about supporting open gl or direct x.

      You seem to be a lazy-enough or low-end-enough developer that this article does not apply to you. However, it does matter to developers who make engines (either primarily or otherwise). Perhaps you should move along; these are not the articles you are looking for.

    • Re:I've used both (Score:4, Interesting)

      by RAMMS+EIN ( 578166 ) on Friday January 08, 2010 @06:17PM (#30701726) Homepage Journal

      ``anyway modern game development means licensing an engine. engine developers worry about supporting open gl or direct x.''

      Exactly. That makes me wonder why they actually bother supporting DirectX, though, seeing as DirectX really only works on Windows, which is also supported by the APIs that the other platforms use.

      ``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.''

      But you don't; you just use the engine and let the engine developers worry about platform specific APIs. You even said as much yourself.

      Also, I don't know to what extent DirectX is "one api". The way I understand it, DirectX is, first of all, made up of several different APIs for different purposes, e.g. Direct3D, DirectSound, and DirectInput. So there isn't really just one API. As for keeping up with it, to what extent is DirectX actually backward and forward compatible? I have never coded for it, so I don't know, but I got the impression that compatibility is often broken between releases. OpenGL seems (again, this is just my uninformed impression) to be rather stable, favoring extensions over completely changing things. Given these things, I find your argument that, with DirectX, you have to only keep up with one API hard to follow. To reiterate, I don't think it's one API, and I don't think it's easier to keep up with than its competing APIs.

    • Re: (Score:3, Informative)

      True DirectX offers a whole suite of tools but I suspect it's not best to use it for everything. Otherwise one of the biggest engines (Unreal) wouldn't be using OpenAL instead.

      http://en.wikipedia.org/wiki/OpenAL [wikipedia.org]

      It's also dishonest for the various people posting to claim that games are primarily done in D3D. That is true for a lot of PC games and all 360 games but no one uses D3D for Playstation. So any major engine has to support both as you will find one of the most popular (if not most popular at th
  • by solios ( 53048 ) on Friday January 08, 2010 @04:59PM (#30700730) Homepage

    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. :-|

    • Re: (Score:3, Interesting)

      by sznupi ( 719324 )

      Majority of PCs sold are laptops though, so it makes smaller difference now.

  • by Philodoxx ( 867034 ) on Friday January 08, 2010 @05:25PM (#30701058)

    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.

  • OpenGL pride (Score:4, Informative)

    by pyalot ( 1197273 ) on Friday January 08, 2010 @06:25PM (#30701822)
    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.)
  • SDL 2.0? (Score:4, Interesting)

    by Zombie Ryushu ( 803103 ) on Friday January 08, 2010 @07:03PM (#30702330)

    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?

Don't get suckered in by the comments -- they can be terribly misleading. Debug only code. -- Dave Storer

Working...