Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
Tell that to Quake 4, Prey etc.Scali said:OpenGL 2.0 didn't quite turn out to be OpenGL 2.0 anyway.
Basically it's just OpenGL 1.5 with some extensions now standard in the API.
OpenGL is dead.
Scali said:OpenGL 2.0 didn't quite turn out to be OpenGL 2.0 anyway.
Basically it's just OpenGL 1.5 with some extensions now standard in the API.
OpenGL is dead.
Cause opengl is just for making games you know...Scali said:OpenGL is dead.
Hvatum said:Direct3D API development is driven by Microsoft itself. Every once in a while, they bump up the version number, change the old API, and add some new stuff. Then the graphics cards vendors scramble to support the newest D3D API in their graphics cards. The benefit is that if you write for D3D version X, then the graphics cards your game will run on will support all features, or not work at all. This could be a good thing if you want to throw out a game with a shelf life until the next version of D3D comes out.
OpenGL development, on the other hand, is driven by the graphics card vendors. They come up with a nice feature to distance themselves from the competition (not that there are many competitors these days), and roll it into an OpenGL extension. If the extension is good, others will adopt it, and at some point the extension becomes blessed by the ARB, and will finally end up in the next version of core OpenGL. Take the vertex buffer extension, for example. IIRC, it started as Nvidia's private extension using glVertexArrayRange, then they added fences for double buffering, and then the ARB stepped in and put it under a really nice interface, and now VBOs are part of the newest OpenGL. (But the old extensions are still there, if your program wants to use them!)
The problem with this approach is that a conforming OpenGL implementation does not necessarily support the extensions you want to use in your programs. So you have to add extra logic to query for the extension you want, then enable them (which is a pain), and fall back to alternative rendering methods if it isn't there. I heard rumors that the Doom3 rendering engine is actually several different rendering engines, with the main program figuring out at load time which one is most suited for the implementation it's running on. This adds to the development time, but makes your program scale well (well, maybe Doom3 was a bad example), and it ensures the program will still run years down the road.
And to answer your original question, features of modern graphics cards are exposed under OpenGL and Direct3D, but OpenGL allows card vendors to come up with their own cool stuff without having to wait for Microsoft to deem a feature necessary. So I would think that OpenGL does a better job exposing all functionality than Direct3D - after all, new graphics card generations appear faster than new Direct3D versions.
Finally you must remember that non-microsoft platforms need OpenGL so it's here to stay. If you want a fast 3D cross platform game then you must use OpenGL.
Lord of Shadows said:Cause opengl is just for making games you know...
Scali said:I don't see the logic there. Since DirectX is backward-compatible by definition, newer versions of D3D will not have any effect on any code written for previous versions.
So I don't understand the 'shelf life' comment. The games won't suddenly stop working or anything.
Scali said:That's nice and all, but Direct3D has had hardware vertexbuffer support since DX7, and in a vendor-independent way. So it's not like OpenGL's extensions were a practical advantage over D3D. In fact, they were a disadvantage. You had to write vendor-specific code, and fallbacks when the extensions weren't available. In D3D, it works transparently.
Scali said:Multiple renderpaths will always be required, if you want to support a range of hardware. But since D3D doesn't have any extensions to worry about, you can reduce the renderpaths required to a minimum, whereas OpenGL will require vendor-specific support for older vertexbuffers, shaders, render-to-texture etc.
Also, as I said before, DirectX is completely backward-compatible, so it ensures that things will still run years down the road aswell.
In fact, DirectX is MORE backward-compatible, because (again) there are no extensions. In OpenGL it has happened more than once that vendors decided to remove older extensions from their drivers, in favour of newer ones (usually ARB).
This means that old code depending on those extensions will either break, or fall back to a less efficient path. This cannot happen with D3D.
Again, this is nice in theory, but it doesn't work like that in practice. Things like render-to-texture were only solved properly a few months ago, in some new extensions.
With D3D they got it right the first time, making it far easier to use and more efficient. It's become basic functionality in D3D years ago, and many effects rely on it. Effects that are missing from most OpenGL games.
If a feature is important enough (like SM3.0), MS will release an update immediately. You can pretty much assume that if a feature is not in D3D, it's not worth the trouble (either the feature has very little use or gain, or there is not enough hardware supporting it).
Scali said:That's not entirely true. Not all other platforms have an (efficient) OpenGL implementation. With the PS2 for example, you're tied to custom stuff for good performance. The hardware is far too different from a PC to ever get OpenGL efficient on it.
And the XBox doesn't support OpenGL either. It does support DirectX however.
And for the Mac, there are several implementations of DirectX available, like www.macdx.com, which have been successfully employed in ports of hundreds of PC games.
Scali said:So it's not like OpenGL is the answer to cross-platform... or that DirectX is limited to Windows only. DirectX's main problem is that it is not ported (yet?) to a lot of platforms.
Besides, if you design your engine properly, then it should not be such a big deal to have an optimized backend for any platform you want to port to, regardless of API.
Even if you use OpenGL, you can't assume that you can run the exact same code on a PC and a cellphone. You'll have to cut down on features that are not supported on other platforms, which may be about as much work as rewriting for a different API... it will just give less-than-perfect results.
Hvatum said:You might very well be right. I was thinking back to the days of DirectX 5.0 when there were no shortage of version incompatibilities.
That's nice and all, but things are not so simple. Nvidia's implementation of shaders was tightly tied to a number of uncommon features of their cards, and so in reality the programmer would likely had to write two sets of code anyway.
Not until Pixel Shader 2.0 was a similiar enough implimentation standardized that this situation was remedied. By this point OpenGL had introduced its own ARB-approved extensions for both vertex and pixel shader extensions (GL_ARB_vertex_program and GL_ARB_fragment_program) so any DirectX advantage was moot.
Remember also that ultrashadow wasn't supported until DirectX 9.0 but has worked as a vendor extension in OpenGL since day one.
Just because OpenGL has vendor specific extensions before they're ported to DirectX doesn't mean it must lack a standardized specification.
Even with a standardized specification different rendering paths must still be implimented as you rightly mentioned. (Half-Life 2 anyone?)
And who made the XBox again?![]()
I also missed the "several" implimentations of DirectX for the Macintosh or the "hundreds" of games ported using these implimentations. MacDX supports only a limited subset of DirectX's API so for anything but simple games it's out of the question.
OpenGL has efficient implimentations in Irix, BeOS, OS2, Solaris, AIX, Linux, OSX (The entire UI IS OpenGL!) and the Playstation 3 which supports a nearly completely standardized OpenGL 2.0.
DirectX supports: Windows, the XBox (though not a standardized version) and Mac (kinda).
OpenGL is the best answer to cross platform with all competitors left far behind in the dust. Notice first of all that my original point was that no alternative existed for 3D porting besides OpenGL - given that every single game ported to Mac DirectX is 2D this point still stands. You should also realize that any port of DirectX exists only at Microsoft's whim and will be destroyed the nanosecond it is to their advantage to do so.
Microsoft has a cold-war sized arsenal of patents on DirectX. if they chose to wield them against DirectX ports then the results would be nothing short of apocalyptic for those foolish enough to depend on those ports. Right now Apple is nothing more than a niche player so the benefit to Microsoft of looking good and moving winning the hearts and minds of developers is greater than any negligable market share loss that Mac DirectX causes Microsoft. Even if the MacDX was in the legal right in such a matter they would be crushed by litigation costs alone.
OpenGL on the other hand exists as an open specification safe from any one vendor's schizophrenic lawsuit bloodlust.
Scali said:Guess again.
Scali said:On the contrary. DirectX has the whole SM1.x range support, which OpenGL doesn't offer in a standardized way. So even today, supporting older hardware in OpenGL requires vendor-specific paths.
Scali said:Uhhh... That statement is too vague. UltraShadow is a name for a number of features.
Part of it is supported transparently by DirectX, because it is strictly a hardware-feature, and requires no specific API support (when rendering to z/stencil only, fillrate is doubled through some trickery with the pipelines). Another part (depth-range) is not supported by D3D at all.
Sounds like you don't really know what you're saying here.
Scali said:In practice it does. The ARB works very slowly, and basically they just wait until a vendor-specific extension matures, and then they standardize it.
D3D instead specifies features even before the hardware exists (like SM3.0). Basically the hardware is custom-made to the featureset that is already defined. So it is standardized from day 1.
Scali said:Yes, but as I said, D3D reduces that to a minimum, while OpenGL is extension hell (like with the SM1.x shaders, a problem that will never be solved... it will just slowly fade away together with the SM1.x hardware).
Scali said:And since when does it matter to developers who builds a certain platform? All they care about is selling games. XBox is just as valid as any other successful gaming platform.
Scali said:Wow, talk about ignorance.
MacDX is just one example. The only one I know of that is available separately.
The others are used internally by the companies that port the games.
Here's a (non-exhaustive) list of games for Mac: http://www.apple.com/games/features/
As you see, lots of games, and plenty of them are successful DirectX games, such as Halo or Max Payne.
Scali said:Of those, only OS X and PS3 would be relevant targets for games.
And as you can see, at least on OS X, the amount of ported DirectX games is certainly no smaller than the amount of ported OpenGL games, so apparently it's no issue there.
Which leaves only PS3.
Scali said:I disagree that linux and BeOS have efficient
implementations by the way.
Scali said:BeOS has no official driver support from any popular vendor, making the driver support and performance spotty, to say the least.
Scali said:And linux has support from ATi and NVIDIA, but ATi's support is quite poor, and although NVIDIA's support is considered good, still the Doom3 port appeared to run about 20% slower on a linux system than on the same system running Windows. A 20% difference is not what I call 'efficient'.
Scali said:So really, only PS3 would be a proper reason for using OpenGL at this point. But it's not even out yet. And I don't think its impact will be large enough to have people writing more games in OpenGL... I think they'll just stay the way they do now, where the PS will have its own middleware, and ports to different platforms will be done with different APIs.
Scali said:There's the Mac-ignorance again, brrrr. Really, you should research before you talk nonsense about things you don't know anything about... Halo is a 2d game? wow!
Source 1 said:Imagine the surprise when Bungie decided to unveil the project during Steve Jobs' keynote speech at the Macworld Expo, barely two months after E3. As the highlight of Jobs' discourse on Macintosh game support, designer Jason Jones (who also created Myth) took the stage to present an in-engine demo of the game to the enthusiastic audience. Although there were few changes since we last saw the game at E3, we did manage to corner Jason Jones to discuss the game in greater detail.
Scali said:As for legal trouble... MesaGL can't even be called OpenGL... Did you really think OpenGL was called OpenGL because it's open? No way, SGI has all the rights to it. You have to obtain a license in order to make an OpenGL implementation, and that means SGI calls the shots.
Scali said:You're funny, you know that. Microsoft actually is a large game company itself, and has its games ported to the Mac by such a company (www.macsoftgames.com).
Scali said:Microsoft also is a large shareholder of Apple, so if more games means more Macs sold, that works for them.
Scali said:They have absolutely no reason to go and destroy DirectX on Mac.
Scali said:In fact, there are only advantages. They'd probably even allow a DirectX port on linux, if it means there will be more games made with DirectX, and they can sell their games in a linux version..
Hvatum said:True perhaps. But then againt that doesn't matter in the slightest since people with such old hardware won't be running the newest games with Vertex shaders activated!
How so? It sounds like you knew perfectly well what I meant but chose to misunderstand me. I obviously meant the OpenGL exclusive part. I need not understand the minutia of it's implimentation to understand that it is indeed OpenGL exclusive (Although I thought DirectX 9b/c had gotten it but I could be wrong).
... and available in OpenGL from day -100 and standardized on day 1 also.![]()
True, but I think you're overplaying the difficulty of supporting vendor extensions. It's not the end of the world.
Licensing costs. Online play options.
Read below, neither of these use DirectX for their OSX implimentations.
Really, I count ten games which is much less than half of all OSX games. The list you gave above provided far fewer than twenty games
Then you are wrong.
Doom 3 runs on my machine no more than three frames per second slower than or Windows. This owes itself to the lacking optimization of Doom 3 on Linux not slow OpenGL support in my belief. Quake III was afteral optimized by Loki software whereas Doom III was a quick and dirty port.
That's the game not the driver. Click the above link for proof of this. I'm also not sure how you managed to make it 20% (!) slower on Linux - are you sure you weren't running it at 1600x1200 accidently?
I would find that very surprising given that the only intially supported API for the Playstation 3 will be OpenGL. Why should game developers make so much extra work for themselves, are they all masochistic?
Anything else is, as you mentioned, is in house and proprietary. Wine has proven to us that reverse engineering an entire API is not easy. Ontop of that unless the implimentation of DirectX was implimented on the driver level the API calls will be translated into OpenGL anyway! That's the height of ineffciency!
I also believe that anything Microsoft ported to the Macintosh is not fair game to be counted as proof of DirectX cross platform worthyness because we don't know what exactly they used and if it was indeed DirectX no other game developer has access. Ontop of that rumor has it that Bungie was planning a Linux OpenGL based version of Halo before they were bought by Microsoft so I'm sure the Macintosh port uses OpenGL. More proof follows,
Note that this was before Microsofts purchase of Bungie so that wraps up any possibility of Halo being a DirectX based game on Macintosh. Also note the conspicious lack of any forthcoming Macintosh Halo 2 port.
I think you've mis-understood how stardards boards work. The OpenGL specification is open to be implimented by all. To use the name "OpenGL" however you must meet a number of qualifications and pass a number of of tests as determined by the architectual review board (ARB) all of which costs money. Programmers working mostly in their free time do not have this money. Read here for more information.
Do we know what API they're using. No - and regardless it's nothing more than a flaky translation layer if it is DirectX based.
Of course, hence they haven't yet. I've already agreed with you on this.
Really, that explains why Microsoft has repeatedly hampered Wine development efforts. But of course Microsoft has never liked Linux, Opensource or competition.
Scali said:OpenGL 2.0 didn't quite turn out to be OpenGL 2.0 anyway.
Basically it's just OpenGL 1.5 with some extensions now standard in the API.
OpenGL is dead.
Naw, OpenGL ARB moves at a snail's pace, but even OpenGL.org claims 2.0 "is the sixth revision since the original version 1.0": http://www.opengl.org/documentation/opengl_current_version.htmlSly said:9 different versions of DirectX vs 1 version of OpenGL. Wow! OpenGL is so dead!
pxc said:Naw, OpenGL ARB moves at a snail's pace, but even OpenGL.org claims 2.0 "is the sixth revision since the original version 1.0": http://www.opengl.org/documentation/opengl_current_version.html
The 7 major OpenGL releases (not including x.y.z point releases) since the 1992 public release of OpenGL 1.0:
OpenGL 1.0 initial release
OpenGL 1.1
OpenGL 1.2
OpenGL 1.3
OpenGL 1.4
OpenGL 1.5 (OGL SL introduced as a standard part of the language, more of an interim release)
OpenGL 2.0
OpenGL ARB considers it 7 major releases, but you don't. LOL.Sly said:(shrugs) As far as i'm concerned, it's still counted as 1 (well, maybe two but i haven't heard of 2.0 being used much),
Scali said:What nonsense is that? A game like Half-Life 2 runs fine with shaders on SM1.x hardware, looks great too.
Scali said:Your statement was both vague and wrong. Do you even know what advantage the OpenGL-exclusive part will get you? So do you know what you're saying?
Scali said:No, as I repeatedly said. Most standardized ARB-extensions that have been released recently, have been based on the DirectX 9.0 stuff. So standardized WELL after day 1. More like standardized in year 2. And even ripped off from the API you claim it didn't have it available earlier.
Scali said:And what makes you the expert? How many game engines have you developed?
Do I need to explain the basics of economics to you? Ok, I'll go ahead and do it.Scali said:Oh, and Nintendo and Sony don't have those?
Scali said:Uhhh, yea they do.
Scali said:Then your counting may be off. MacSoft alone has ported 150 games, most of which are DirectX (if not all, I didn't bother to check every single game).
Scali said:I think you are wrong there. The way I see it, Quake 3 was optimized on linux, and was compared to a Windows-version that lacked these optimizations. Doom3 was a straight port (hey, the argument was that OpenGL was portable, right?), so it's an apples-to-apples comparison, and then the linux drivers, kernel and compiler leave something to be desired.
Scali said:It's not me, it's some well-known published benchmarks at the time. They even tried it on a 64-bit linux, vs a 32-bit Windows. It didn't help.
The Mac version is also considerably slower btw. Another good example of OpenGL portability?
Scali said:Developing for a console is far different than developing for PC. On a console, everything is fixed, so you just need one rendering path. So developing with OpenGL on a PS3 is far different from developing on a PC. They may well choose to develop with Direct3D on PC anyway, because it gives them more options and lower development times. They've always done this with PS1 and PS2, so why not now?
Scali said:They port at source-level
Scali said:They port at source-level so they can translate the calls at source-level. It's not comparable to Wine at all. And there is no reverse-engineering involved, since the DirectX docs are freely available. There's even someone who made his own software-emulator for Direct3D, without any reverse-engineering, or any help from MS: http://sw-shader.sf.net
Looks like you have absolutely no idea what you're talking about here.
Scali said:So, even if that's true (which it isn't, by the way), what about all those other DirectX games, like Max Payne, Age of Empires etc... They were all originally linux OpenGL games aswell? I think you're missing the point, you try hard to disprove one game, but there's no way you can disprove all of them.
Scali said:How do you know? Halo 2 isn't even on PC yet. I wouldn't be surprised if Halo 2 would eventually come to Mac, but ofcourse the PC version will be first. Then they'll port that one to Mac.
Scali said:How exactly does this say anything different than what I said... So how does this explain how I misunderstood it? It looks like I understood it just fine.
Scali said:You might not, but I have spoken to some of these developers who had their DirectX games ported to Mac.
Scali said:Yes, and note that this is no different from OpenGL. Both are controlled by 'evil' companies. And if you don't have some weird anti-MS slant, you wouldn't pick on MS specifically.
Scali said:I don't know of any commercial company that likes competition.Most commercial companies don't seem to like linux or opensource either, seeing as they don't develop for linux or opensource their products.
Scali said:Also, all these links are from slashdot which is hardly an objective source. It's probably the most pro-linux/oss and anti-ms website on the planet. Heck, if you even read that, you're pretty sick. Let alone if you believe everything they say.
Scali said:Also, Wine cannot be compared to game ports. Wine verges on illegal activity, with its reverse-engineering of copyrighted and patented code. There's no reverse-engineering involved in porting a game, and you have the sourcecode and all the rights required.
Hvatum said:What nonesense is that? The shaders need to be active for them to matter. Have fun playing Half-Life 2 on your Ti 4200 at any decent resolution and quality settings while AA is enabled.
Not down to the last line of assembler code, but I trust the countless experts who agree with me when one types in "Ultrashadow OpenGL" into google have a very good idea. Here, I'll even do it for you. I do however understand that this feature was first available as an extension in OpenGL which I'm surprised you're still trying to deny.
You again missed my point which I strenuously I thought I already made clear twice already. Extensions, such as shader model 1.0, are available first (Dictionary.com: The one coming, occurring, or ranking before or above all others) through OpenGL as vendor specific extensions. I therefore fail to understand your fallacious claims that they were "ripped off" from DirectX - how after all can something be "ripped off" if the person accused of the "ripping off" was the first person to integrate the extension?
Furthermore your claim that OpenGL is "ripping (anyone) off" makes absolutely no sense. Neither Microsoft nor the ARB invents these extensions or develops the hardware for them! That work is done by the video card vendors such as ATI, NVIDIA, SGI and 3Dfx. OpenGL and DirectX serve only to integrate these extensions and hardware abilities in an easy use software API after others have invented them. Developers may then chose which of these extensions is the better one. I personally think this ability to chose is a good thing, you I'm guessing do not for some reason.![]()
I completely agree though that DirectX and Microsoft have done more to push ATI and NVIDIA towards standardization than the ARB has. I think though that this has more to do with DirectX's popularity for ATI's and NVIDIAs target audience than either Microsoft's "innovation" or the ARB's lack of effectiveness.
And what makes you the expert? How many game engines have you developed?
I have personally developed nothing more than an extremely buggy basic 3D (Think Wolfenstein 3D Level) game and that was back in 1995. But John Karmack, Atari, the intern at Bioware, Bungi and Microsoft all had no problem using OpenGL and supporting your supposed "extension hell" well crafting awesome games. Maybe the rest of the developers out there just aren't as sharp as they are.
Do I need to explain the basics of economics to you? Ok, I'll go ahead and do it.
If licensing costs are higher when producing a game for the X-Box (Licensing Costs=X) than the Gamecube (Licensing Costs=G) and the total profit (Z) is determined using the equation Units Sold-C=Z and Units Sold-G=Z than the game publisher will produce for whichever consol system has the largest Z. Got it?
Proof?
Proof?
I'm also anticipating your proof that the Linux kernel "leaves something to be desired." The last time I checked it offered true pre-emptibility, hot module loading and better server performance than Windows. That's for another argument though. And the compilier Linux uses is not a "Linux compilier," it's GCC which FYI is used by IBM, Sun and Apple. If you were right though that the Linux kernel and GCC both suck then one would wonder why Quake 3 runs faster in Linux - I guess Windows must really suck!
Of course, but the OpenGL path has still been developed which would at the least make a drastic cut to the time requried for further OpenGL ports. Again, portability does not mean you can just plop in a CD from one platform to the other and get the same performance or even have it work at all. I think you're getting OpenGL and Java confused.
Really! I never knew this!!
*drops sarcasm*
What other level would they be porting at? (Sorry I couldn't resist)
Yes they will give them to you if you sign and NDA. Once you've signed this NDA you've gained access to Microsoft trade secrets and cannot go about reproducing them and adding them to your own software as you see fit.
I also think you missed the fact that the Software Shader was implimented in software. The problem as I mentioned earlier is the lack of driver support for Direct3D calls in OSX and Linux. This is something that ATI or Nvidia would need to change. Until they do all Direct3D API calls must be translated to OpenGL. Until hardware support is there any third party Direct3D emulation will be pretty innefficient.
Finally, if making a 3d party D3D emulation layer is so easy why haven't the smart programers working on Wine accomplished it yet?
As a side note drop the Ad-Hoc attacks, they make you look desperate.
I think this is where the burden of proof comes into play. I've proven something beyond all doubt. Now you either disprove it or the point stands.
Halo 2 has been announced for PC. It has not been announced for Mac.
Meh, you spun it pretty hard to make it look like SGI was some Evil organization pushing down the little man just for the fun of it. I don't love SGI or anything but whatever...
The Direct3D game Soldier of Fortune was ported to Linux. Guess what Loki used for their Linux port (Hint: It starts with an "O" and ends with an "L"). Just because a game was ported does not mean it used the original API.
Except for of course SGI, HP, Sun, IBM, Apple, Correl, Redhat, Suse, Dec, ID Software and countless other companies which don't want to re-invent the wheel every time the program something.
Did you click on them? All of them lead to objective sites such as ZDnet, Microsoft.com, the New York Times and other well respected news outlets.
Yes, hence all and ports of 3D Macintosh games have used OpenGL.