What is Happening with OpenGL?
Trapped In Windows Hell asks: "I was just at the local game store looking for a new game, and I noticed the absolute lack of ANYTHING other than DirectX games. Where has OpenGL gone, and what does this mean for games on GNU/Linux? If DirectX is so hard to program in, so clunky to use, and limits the game to being sold on only one OS, WHY do so many programmers use it? It seems logical (to me, at least) that programming as portably as possible, as simply as possible, and using standards where possible, leaves a lot more sales options open for the future... and DirectX seems to close all options *but one*." OpenGL use in Windows gaming has decreased dramatically in favor of the use of DirectX which is improving with each release. Will OpenGL continue to mature on the Windows platform (which arguably is the platform that drives most of the mainstream demand for graphics) or will it continue to stagnate as game and driver developers concentrate on the offerings from Microsoft?
Everything in OpenGL is different for different cards. If you code in DirectX, at least it will work on all cards, even if only on Windows (so far). If something doesn't work right with a card in directx, it's the card driver's problem. It's universal in the Windows world.
OpenGL is freaking amazing. I love it. Unfortunately, card makers want to write OpenGL extentions specifically for thier cards so you have to have aset of code to do the same thing for each card.
When will people come together to agree on non-MS-specific standards? Probably never. Maybe we should support
-EvilMonkeyNinja
Mild Mannered Host by Day
Wild Hammered Programmer by Night
If DirectX is so hard to program in, so clunky to use, and limits the game to being sold on only one OS, WHY do so many programmers use it?
By the sheer amount of DX games out there, isn't it obvious that the game industry doesn't find DX clunky and hard to program in. And remember DX offers MORE than just graphics. It also does sound, input and networking.
As we've seen this year, game companies don't care whether DX limits them to windows or not because:
1- Almost everyone uses windows to play games on.
2- If they ever did want it ported to other platforms, there are companies (you know who they are) that will do the porting for you (yes, that includes porting DX games).
A game's life is very short. Keeping options open for the future isn't important because there isn't a future to speak of. The other platforms just aren't large enough to do the extra work necessary. Cross-platform programming isn't free. The price is time, and when you're trying to get a game out the door, time isn't on your side.
-linux... they can't *give* that shit away.
1. DirectX is changing. It's updating, moving with the times, and incorporating new developments in graphics card technology in a standard way, there's features some cards don't support, but they're parts of directx, and they'll be on future hardware. On OpenGL, if you use the nvidia extensions, they're not going to be there on ati cards, even a few generations down the track when the same features are standard across platforms.
2. Since dx5, it's been a good environment. It took MS a while to get it right, but they're constantly updating it, which yes, means there's a continual learning curve, but that's what makes game programming the fun it is! OpenGL is controlled by comp scientists, DX by money, which means DX will always be quicker off the line with the features developers and customers want.
I know that MS makes it, and as a whole, MS is bad, but the company's tactics don't make the technology suck, and joe sixpack who wants to just go play unreal doesn't care if MS bundles ie to make his life easier or to kill netscape, cause it makes his life easier. There's one constant in life these days- people as a group, are cronically and terminally lazy. Most people view money less important than effort, and even their time less important than effort... Somebody would rather take 2 hours to do a 15 minute job if it makes it seem like less work to them.
</rant>
Send lawyers, guns, and money!
You're not going to find many altruistic coders or designers working for companies that put boxed games on the shelves at Egghead or Best Buy (sidenote, that last is most definitely an oxymoron. But I digress.)...game programmers who work for big software houses are in it for the bucks, and the only OS/platform that they see as paying the bills is WinXX. So they write for WinXX, and right now, that means primarily using DX APIs. If there were a bigger demand (read: potential revenue stream) for other platforms and OSs, OpenGL would probably make more sense to them...and I'm willing to bet my lunch that the games that are still OpenGL-capable have also been ported to the Mac platform (not that I've looked, since I don't own a Mac, ergo don't need to examine the offerings for it).
In short...DX makes more economic sense, simplicity of coding notwithstanding.
Just my two cents' worth...save up the change for a root beer float or something.
All the world's an analog stage, and digital circuits play only bit parts.
With XBox drawing near, and XBox's adoption of Direct** APIs - we can seriously expect to see this trend accelerate.
MS is providing a bridge, via XBox for PC games programmers to get their apps on a console. If the rumours that consoles are the sole future of gaming are correct - then we can expect to see our PC Game developers very happy to have this new area to sell to.
But, considering this, what does this say *REALLY* about M$ and its XBox? Arent they in fact cutting off PeeCee sellers from a market - the would-be-desktop-computer gamers market? Isnt M$ REALLY competing with its own customers in this case? With M$ focusing on realeasing a box themseleves - wont that mean decreased sales for their own customers?
I see M$ XBox as being its most obviously brazen move yet. I understand M$ has been into hardware for sometime, but brand-ed mice and keyboards arent at this level.
What does this have to with directX? It means that once again, M$ is using their weight in one market (pc gaming os) to move into another (console manufacture). I really wonder what Compaq, IBM and Micron think about this, wont this mean a drop in their sales of Electronics-boutique level machines?
Imagine for a moment, with Sony talking about making PS2 a Linux Computer (with HD, Keyboard, Mouse etc) wont this invite M$ to do the same? Will the XBox become a "Microsoft Desktop Computer"?
With PC developers looking at the XBox as an opportunity to expand their marketplace - you can bet they are not going to be too eager to use OpenGL and cut themselves off from the XBox-platform.
Have you ever heard of the economic concept of "Diminishing Returns"?
That last 8% may not represent enough profit to make it economically viable to justify the cost of developing in OpenGL.
btw,
games often use DirectX release 8
not because it's features.
it's cause there publishers require them to use it.
heh
often when you work at companies, they require you to confirm to variuos stupid practices..
well that's one of them.
you have to remeber, most people are corporate whores.
hence linux not catching onto main stream so quickly. cause people are whores like that, they always want big name stuff, etc..
OpenGL only offers graphics, dx offers: graphics, joystick, sound, forcefeedback, mousecapturing.
There are libraries giving you all these features using GL graphics, but they are not made full time and/or they are made by hobby programmers. The keyword here is time. MS have employed programmers to create, maintain DX. This means better time, and resources making a better product overall. Not just the graphics part. The graphics part of DX is not better than OpenGL, it's just everything around it.
Look a monkey!
fairly widespread, but people are starting to see the light.
:)
a co-worker of mine has a buddy that does simulations of large ceramic ovens. They used OpenGL for visualization on SGI machines for over 15 years. When they realised they needed to upgrade thier system they were faced with 2 choises: a linux cluster with OpenGL (MesaGL) or a Windows cluster with DirectX. After a demo on of each on identical hardware, they got 2x the performance on the Linux cluster. They went from starting a simulation in the morning and getting the results the next morning to starting one before lunch and having it ready before they got back
If OpenGL will do what you expect it to be needed to do, use it on Linux. It's awsome. It will rock your world (especially on 2.4 linux SMP machines)
-EvilMonkeyNinja
Mild Mannered Host by Day
Wild Hammered Programmer by Night
The modern games developer will use DirectX over OpenGL every time. Incidentally, the incredibly poor support for DirectX in Linux is one of the reasons it is failing in the games market.
The question should not be "why aren't game developers using it?" but "why aren't the video card makers supporting it?"
And that, dear friends, is where market power comes into play, and the one with the power in this market is Microsoft.
+1 Insightful, -1 Troll. What can I say, I'm an Insightful Troll.
You say that sheer volume proves it's easy. ASM on x86 isn't exactly the nicest thing. Or, do you _like_ being limited to 8 general purpose registers, and a crappy FPU stack?
If we go by sheer volume, x86 must be a freaking dream to write software for, and it must be some heavenly architecture!
I think some people are missing the point.
The big argument against DX is it only runs on windows. The same things that make windows awful for most things makes it superior for gaming. Windows has such an incredible boost for foreground applications (especially ME/98) that it makes it much easier for gaming..
How many times have you had an mp3 skip because something stupid is happening in the background on linux?? It's great that you can game or do multimedia on linux, but the fact is that what is the point of ramming the square peg into the round hole??
Btw, you're comparing apples to oranges here; DirectX is a gaming architecture, while OpenGL a graphics one. You should compare Direct3D with OpenGL. :-)
:-)
Simple answer:
Direct3D is now simpler to use, better supported by video card manufacturers, and more OO than OpenGL.
Long answer:
Up until recently, OpenGL was considered more advanced because it was more high-level. You didn't have to write as much OpenGL code to get stuff to work as you did in Direct3D. (Immediate mode, we're talking about here; only a complete moron would write Direct3D retained mode code, what with the overhead it causes.)
However, with the release of DirectX 8.0, this has changed. Direct3D is now a lot cleaner and easier to use. No more does every card have all these annoying mode bits for every single little thing; the market has consolidated in such a way that the major players all support simultaneous use of the most important stuff. (In the olden days, you had to check mode bits to see if you could use alpha blending and bilinear filtering at the same time, for example. Some cards did it, some didn't. You had to have a work-around in case each of these things failed. This is no longer a problem.)
Additionally, Direct3D 8.0 takes OpenGL's way of looking at things, adopts, extends and surpasses. Ever heard of vertex shaders? Pixel shaders? In OpenGL, these are just extensions that are implemented differently by the video card manufacturers. (If they're available at all..) In Direct3D, they're an integral part of the API. And they'll become even more important in years to come. Here's why:
Anyone remember back before video cards could do stuff on their own, when you did everything on the main processor and pumped it to the video card raw? Well, we're in those days right now with video card design. These processors have very specific things they do; if you want to make a dynamic texture, you'll have to ship it back to the main CPU to process it there. Weighted vertices that use in excess of a certain number of matrices (I'm talking about skinned animation systems here) have to be done on the CPU. The message here is that what the video card can do is very limited, and is "hard coded" in the hardware. There isn't much flexibility here.
Enter "shaders." These are little applications (more like scripts, though, since there are no branches in execution) that you can run inside the video card. Instead of going through all the vertices on the CPU and transforming 'em or whatever on the CPU, you can write a little program called a vertex shader which'll do it for you on the video card. And pixel shaders will do the same for your textures; now you can have zoom effects, warp effects.. heck, you could probably implement Photoshop as a set of pixel shaders. (In fact, I don't doubt they're looking into it as I type.)
You see, the graphics API's no longer just a one-processor API with DirectX 8; Direct3D has become an operating system unto itself! Vertex shaders and pixel shaders are like specialized mini-drivers that you load to access the additional functionality. It's really quite neat! I can't wait to see what the demo scene does with these things; the possibilities are endless!
As for the OO thing, have you ever considered just how many games are OO? Considering OpenGL's very C-ish nature, C++ programmers are easily going to gravitate towards Direct3D, simply because of it's C++ OO design. (And lets not even get started on what happens whenever you throw more than one monitor into the mix. I mean, with DirectX, all you do is use another pointer; what do you do in OpenGL..?) Add in the fact that you'll need DirectX for input and audio either way, and..
Wrapping things up, until OpenGL catches up to Direct3D in terms of it's integration of vertex and pixel shaders directly into the API, (programmers are lazy; they don't want to have to go searching for a frickin' function pointer to access an extension..) it'll be playing second fiddle to Direct3D in the minds of developers. Especially with the X-Box coming out, and everybody and their cow wanting to port to it.
Anyways, carry on..
James
Since I do not program games but do play them I will throw in my 2 cents. Other people may not agree, good for them. This is only for FPS games. I don't play RPG or RTS so I can't say how it is in those genre's.
It's hard to explain these things without being vague so bear with me.
First, the mouse movement in every d3d game I have played has sucked, at least for me. The only way I can explain it is that it feels sloppy.
Second, d3d games always look glossy or shiny. This is another point that is hard to explain. I really with I could explain this in better detail as this is the problem I have always hated this. It looks like everything has a nice shiny clear coat finish, if thats any better explanation.
Maybe opengl is going away in games and that makes me sad. If my only choice is the sloppy mouse and shiny graphics in d3d then I would probably only play ones that are very heavy on storyline, which narrows it down to 1 or 2. I wouldn't play any mp deathmatch, ctf, etc.
It must do one, and only one thing:
Work better than Direct3D
It is that simple. As many people have pointed out DirectX runs on 80%-90% of all home pc, so switching to Open GL to capture more marketshare is only feasible if the cost of development are the same. The problem is: they are not.
Microsoft has poured unknown millions into the development of DirectX and has produced a universal set of API's that work on any video hardware. Until OpenGL or MesaGL etc. can function out of the box with the same (relative) ease development houses will stick with DirectX.
In simple economic terms, DirectX and OpenGL are not close substitutes. One is well known entrenched and universally supported, the competition resides more on the margins and has universal compatability problems. And these compatability/extension issues drive up the price of developing with OpenGL so it becomes an even less attractive substitute.
The OpenGL/Direct3D battle is no different from the Linux/Windows or IIS/Apache or any other open source/proprietary battle. It is not won with principle, or good intentions, but with results. If people want to see OpenGL succeed make it better, and cheaper to develop with than the proprietary offering.
Comments should be like skirts. Short enough to keep your attention, but long enough to cover the subject
OpenGL is used for scientific modeling, film fx, and tons of other things. DX ( D3D ) is only good for one thing and that's *PC games. PC games are nothing, since they can't even compete with consoles. DX on Xbox is also a moot point.
The point then? The point is GL will always be what modelers and the R&D depts will use, because it's a stable and modular API.
As for GL games? If you have a game based on GL, it will support more card features months before DX. However you can't use a cookie cutter engine like lilthtech and the like. There sure are more DX games, but they're mostly swill to be honest.
Would you rather have a dozen lithtech based games or something based on UT, Q3A, or etc?
-------
Please remember when you post the PC gaming market has nothing to do with GL's "life and death".
May the mongoose save your soul!
Its true that XBox is giving DirectX a second platform, but OpenGL is doing well, and the preferred 3D API everywhere but WinWhatever (the Mac being a notable example).
There is intensive ongoing work on both APIs, and don't think for a minute that Direct3D would be what it is today without OpenGL driving it.
By the way, Direct3D is precisely nowhere in the higher end 3D marketplace...games are by no means the only 3D application. I doubt they're even the major money maker - I suspect CAD/CAM has that honor.
We'll see how things look going forward...I expect OpenGL to be around for a good, long time.
Just take a look at the Official OpenGL Website to get a feel for how lively the OpenGL world is...the laptop version of the NVIDIA Quadro2 professional GPU looks pretty sweet!
186,282 mi/s...not just a good idea, its the law.
Galileo: "The Earth revolves around the Sun!"
Score: -1 100% Flamebait
Hi,
Many of the posts here deal with pros and cons of Direct3D and OpenGL. I believe the real issue here , since both have shown (at least nowadays) to be competent 3D-API:s, is motivating the existance of one or the other. Two API:s only makes things worse for consumers and a proprietary, non-cross platform API doesn't improve the situation.
I have personally always questioned the existence of Direct3D (I am not talking about DirectX in general here), since I really can't find anything it has contributed to but fragmentation of API:s and drivers. I am not out to bash Microsoft here, but I really can't help to see how well Direct3D fits in with Microsft's known ability to use its power (and near monopoly) to crush the competition. Direct3D does not only hurt OpenGL, but also gaming on other platforms in general, thus forcing consumers to the one and only alternative... Anyone but me thinks Deja vu? Why didn't Microsoft simply develop a DirectX wrapper around OpenGL, like SDL? This would allow OpenGL to integrate transparently into the rest of the DirectX stuff and at the same time avoiding the introduction of a completely new redundant API.
OpenGL works great (why else do the #1 3D-genius favor it), just look at the Quake-engine games and the upcoming Doom... OpenGL had this when Direct3D didn't even exist and was clearly the better API for a long time. It is robust, also cross-platform and not controlled by a gigantic "closed" company. So the choice should be a no-brainer, right? Evidently, somewhere, something in my conclusions fail...
I believe the developers are to blame. Tim Sweeney once chose to replace the ageing proprietary Glide API in his Unreal engine. He decided (about the time of DirectX5) to go with Direct3D, citing better driver support. This is just such a bad argument... Direct3D drivers may have been better back then, but OpenGL support is today as good as Direct3D. OpenGL was back then already a mature, proven API. How would driver support be for OpenGL today if OpenGL was the only (or favored) API?? Just think about it....
Though I commend Epic's efforts to bring its Unreal engine to alternative platforms, I think they made a bad choice. It was short sighted and hurt the gaming community as a whole in the long run, introducing fragmentation, hindering cross-platform development and forceing 3D-graphic card makers to put their resources on developing two sets of drivers instead of all efforts into one of them.
Now, don't get me wrong, I don't blame Epic for all of this, but they make a good example of developers taking the easy way out instead of going the way which is good for all in the long term. Now, I am certain they have another view on this... I would love to here it.
If developers really care for gamers they should do like John Carmack. He has put free effort into bringing his gaming experiences to as many people as possible, no matter what underlying platform they use, by contributing to the improvement of free OpenGL drivers himself (through the Utah-GLX project). His creations run on virtually every platform out there and they have always been on the bleeding edge. This prove that cross-platform gaming is possible, but only if the will is there and the right choices are made.
So, my question to game developers is: Why choose Direct3D? It's not as if OpenGL won't run on Windows...
/Erik
This is exactly what John Carmack and Chris Hecker predicted would happen way back when DirectX 3 (the first with Direct3D) came out.
They predicted Microsoft would pay developers to use the crap they put out, and slowly improve it by copying OpenGL. This finally leaves them with a functionaly clone of OpenGL with a propritary interface solely under their control.
And surprise surprise, that is exactly what happened, and us game developers had to suffer through DirectX 3, 5, and 6 before it really stopped sucking, when we could have been using the end product immediately back in 1998!
I write 3d game engines for a living, and have been fighting this issue for a decent part of my career.
The OpenGL ARB really doesn't give a crap about games. Sure, there are a number of vocal game advocates, but the majority of the membership is far more interested in maintaining backwards compatability to older SGI and Evans and Sutherland hardware than keeping up with accelerator progress.
If the ARB did care about games, there would be a concerted effort to standardize on vertex and pixel shader instructions between card vendors, and a move to get these into the standard AS FAST AS POSSIBLE, and a push to actively participate in ongoing features. Instead, it took them years to drag in a few interesting extensions, and Microsoft has assumed the unifying role in the gaping vacuum.
As a game developer who has spent too many man-years fighting abysmal M$ API bugs and design limitations since Win 3.0, even I will admit that Direct3D has completely exceeded OpenGL as a 3d game development platform. Why should I invest six+ months tuning seperate nVidia and ATI shader support engine features under their respective OpenGL extensions, knowning that this GL code is barely reusable and is tied to a VERY limited set of cards?
Add to that M$'s role at the ARB, and the influence they throw around with their money to keep other members in line (remember Farenheight?)
Unless the ARB makes tremendous changes in its policy of staying 3 years behind the hardware, I strongly feel OpenGL is relagated to the niche BASIC fell into. Sure, you can get it on all platforms, but its so slow and feature poor, why bother?
I wouldn't hold my breath...
> I think it's only been established that Id didn't do well with the Linux gaming market
All linux games sales EVER don't add up to one medium selling windows title. We are one of the creditors that aren't likely to see money that Loki owes us, so we have some idea just how grim it is.
That isn't saying that it can't change in the future, or that doing linux ports isn't a Good Thing, but it isn't an economic motivator at the present time.
John Carmack
John Carmack is simply telling the truth. Look at the gaming market. How many Windows games do you see? How many Mac games? How many Linux games?
Forget all of those. Consoles are where's it at now. I say this as an avid gamer of 10+ years who used to play the hardware rat race with all the others. Every year a new $300 video card, constantly upgrading processors, memory, sounds cards. Who needs it.
I'm totally sold on consoles now, and I'm addicted to my PS2. The only thing that PC games really shine at these days is better video resolution, but at what cost? (Used to be networking, but the consoles are catching up there.)
Judging by all the dying PC game companies, the slowdown in PC-only titles, and the lack of innovation there, I think the PC gaming market is becoming irrelevant.
So I don't really care if I can't play games on my Mac or Linux box. I don't play them any more on my Windows box, either.
You know this kind of post is funny. I recall just a few years ago when the N64 was brand new and Dreamcast and such, that the exact same discussion began. What can the PC possibly offer now that the console hardware has caught up to it?
Think about how things will stand in 18 months when the PC has blasted far beyond where the 'nex-gen' consoles are.
Lest I be misunderstood, I must clarify this by saying that I am not here bashing consoles, and replying with the: PC's WILL ALWAYS RULE! Argument.. I believe the answer is a more rational perspective to the whole argument. PC and Consol are vastly different kinds of machines right now. While they may converge. the fact stands, the market for the PC and Console are not the same yet.
I admit, there is some overlap.. But the kind of people that love to upgrade their system, run their latest game at it highest resolution and speed will not go away. Nor will those like myself who like the fact that they can integrate their development station, word processor AND game platform all in one. You talk about how 300 dollars is too much to spend for a new card.. Do you think *I* and going to go out and drop 300 dollars for a new PS2, 40 bucks for a new controller( or maybe I need to have 3 more? ), god who knows how much for a HD expansion, memory cards, etc?
The whole argument is simply a matter of perspective. You probably are the type that enjoys console games more. I, in general, am not. Perhaps some day yes, the console will win.. But it will not win the way you think. Have you noticed the price of consoles rising just as rapidly as the price of a new computer drops? I'll bet at some point in the next few years, they will finally overlap, and there will be a marginal difference at best. Just as there are PCs designed for the specific task of handling server loads, there will probably be PCs specificially designed for games... Sounds similar to what the XBox is maybe?
This discussion asside, I think the generalizations of "dying PC Game companies, slowdown and lack of innovation" are a load of crap. Can you claim Black & White suffers from a lack of innovation in AI, or that Max Payne doesn't have cinematic innovation? I don't claim the opposite, that consoles suck. I think both are evolving, and seems to me slightly towards eachother. I could be wrong, this is merely my observation. I think you however, are completely off base and biased.