Newb Question: Direct 3d and OpenGL - How are they diffrent?

For the longest time I thought that pixel/vertex shaders were a DX only feature. But sombody on discuss.madonion.com pointed out to me that the API doesn't matter as its a hardware limitation - If the card supports it then any API can use that specific feature. Is this true? If it is then what makes OGL diffrent than DX?
 
One of the major differences between them is that you can expose further functionality of the latest hardware through extensions (usually, IHV specific extensions) and any IHV can do that to expose that one "special" functionality. With DirectX, you have to wait for MS to decide what features would be implemented in the next DX revision, it's all up to Microsoft, so unless they decide to expose that special functionality your hardware offers (Matrox's displacement mapping for instance), you're out of luck, and your feature will be left unutilized.

I personally prefer OpenGL, but DirectX is taking a more dominant position on the market and gains more and more support from major game companies. The only reason OpenGL still exists (and will hopefully keep improving with OpenGL 2x, etc) is because of John Carmack.
 
I'm a newb... don't quite understand but I'll try to respond to the best of my ability :D

Ok so what you are telling me is Direct 3d only uses what MS made it able to use but OGL can use any feature supported in hardware via IHV extensions? Is that right? Probly not :( What the hell are IHV extensions?? And where did you guys learn all this stuff anyway??? Collage??? University??? Or did you just pick it up?
 
Ok so what you are telling me is Direct 3d only uses what MS made it able to use but OGL can use any feature supported in hardware via IHV extensions? Is that right?

That is correct! :)

What the hell are IHV extensions?? And where did you guys learn all this stuff anyway??? Collage??? University??? Or did you just pick it up?

IHV extensions are vendor specific extensions. For instance, nVidia's NV_vertex_program2 extension exposes the additional NV30 functionality and has far more functionality than ARB_vertex_program currently accepted by the ARB (although I donno the situation right now, I recall them making much progress there, so my comment might be outdated).

Where we learn this stuff? Well... most of us learn it ourselves, from the net, books and what not...
 
nVidia's NV_vertex_program2 extension exposes the additional NV30 functionality and has far more functionality than ARB_vertex_program currently accepted by the ARB

Whats ARB? And are these IHV extensions to graphics cards what MMX, SSE, 3D NOW ect are to CPUs?
 
Freak'n Big Panda said:
Alright so why does anybody use Direct X? OGL seems much superior considering its not limited to what MS decides to include in directX.

It's kind of the same answer as "Why does anyone use Windows when Unix works fine and has been around for years?"

When Microsoft brought out DirectX, it was thought that a) OpenGL drivers were too difficult for hardware vendors to write, and b) OpenGL was not an efficient enough API for the limited horsepower of personal computers (same arguments with Unix, too hard to learn, too resource demanding on PCs). There was some merit to this argument in the early days; many vendors that could manage a DirectX driver had great difficulty with a good OpenGL driver.

Of course, as DirectX evolved, it became much more like OpenGL (which was a more powerful model to begin with). Some of its "features" that were designed with "efficiency" in mind turned out to be absolutely horrible in practice, and fell by the wayside. (Similarly, later versions of Windows are much more like Unix, and are now even more resource intensive).

So now we can look back with hindsight and say, wouldn't it have been better just to bite the bullet then and go with the existing standards? But then, of course, Microsoft would have been promoting technology that they did not control, which they don't like to do.
 
alexsok said:
With DirectX, you have to wait for MS to decide what features would be implemented in the next DX revision, it's all up to Microsoft, so unless they decide to expose that special functionality your hardware offers (Matrox's displacement mapping for instance), you're out of luck, and your feature will be left unutilized.

Ehrrr, well in all fairness it should be mentioned that it's really DirectX that pushed the envelope as far as [hardware] features goes. The remark about it's all up to Microsoft is rather simplistic as they work very close with hardware vendors like nVidia, ATI and Matrox and therefore DirectX has advanced to the pretty awesome state that DX9 is going to be (especially on the shader front).

While somebody now is going go say that OpenGL 2.0 is the buzz, the
fuckin' mustard, it's the mutts
it's still a year away and doesn't dictate any hardware besides the P10 which is now aimed at the pro/workstation business. So while OpenGL's extensions open for hardware vendors to implement special features, they doesn't move the collective frontiers.
 
antlers4 said:
It's kind of the same answer as "Why does anyone use Windows when Unix works fine and has been around for years?"

A more salient question would be (have been): Why did anyone bother using IBM and Apple machines when the Commodore Amiga had features that wouldn't arrive as standard features on the other platforms for several years?
 
Freak'n Big Panda said:
Whats ARB? And are these IHV extensions to graphics cards what MMX, SSE, 3D NOW ect are to CPUs?

The ARB is the Archetecture Review Board. It's a bunch of companies (like ATi, nVidia, Intel, 3dlabs etc) in the industry who decides how OpenGL should evolve.

OpenGL has a set of core functionality that's always supported, if not in hardware it must be supported in software. When a graphic card company has something new that's not in the API they can create a new extension for this functionality. This can then be queried by the application and used if supported.
 
LeStoffer said:
Ehrrr, well in all fairness it should be mentioned that it's really DirectX that pushed the envelope as far as [hardware] features goes. The remark about it's all up to Microsoft is rather simplistic as they work very close with hardware vendors like nVidia, ATI and Matrox and therefore DirectX has advanced to the pretty awesome state that DX9 is going to be (especially on the shader front).

I can't agree at all. OpenGL has almost always been providing the new features before DirectX. It's just that you don't see the hype as when a new version of DirectX is relased. OpenGL continually evolves often in small steps, there are still new functionality released with new drivers for older card like the Radeon 8500. We also already have DX9 functionlity in OpenGL, like the ARB_fragment_program. The classic example of where DirectX should be ahead of OpenGL is shaders, which really is only partially true, vertex/fragment shader extensions where provided with shipping drivers for both the Radeon 8500 and GF3, the problem only being that there were no crossvendor standard.

LeStoffer said:
While somebody now is going go say that OpenGL 2.0 is the buzz, the
fuckin' mustard, it's the mutts
it's still a year away and doesn't dictate any hardware besides the P10 which is now aimed at the pro/workstation business. So while OpenGL's extensions open for hardware vendors to implement special features, they doesn't move the collective frontiers.

The connection between OpenGL 2.0 and P10 isn't anything more than that the P10 will eventually support it, as will the rest of 3dlabs/Ati/nVidia ect cards. 3DLabs took the initial initiative to develop OpenGL 2.0, but it's in no way designed around the P10 hardware.
 
Derek Smart [3000AD said:
]
Freak'n Big Panda said:
OGL seems much superior considering its not limited to what MS decides to include in directX.

Rubbish

Depends on what he's basing "superior" on.

It could be viewed that OpenGL is based on a democratic process whereas DirectX is based on a dictatorship process.

I'd rather have democracy thanks :p
 
Also OpenGL allows an IHV to expose their latest & greatest features for developers to fool around with and to show off tech demos. For example, I can already use the two sided stencil test for my shadows on the R300 under OpenGL, but not under DX8. This helps with my shadow rendering code TODAY.

Where are those DX9 R300 demos damnit!?!??! Oh right.. they can't release them until MS releases DX9. Now that sucks!

I've used both, but prefer OpenGL. I like the programming model better, I like display lists, I like how easy it is to get up and running (though DX has improved in this regard recently) and I like that there's tons of books & sample code for OpenGL. It does suck in some ways though - no "proper" render target support until recently w/ pbuffers, and no proper texture management just to name a few.
 
µße®LørÃ￾ said:
Depends on what he's basing "superior" on.

It could be viewed that OpenGL is based on a democratic process whereas DirectX is based on a dictatorship process.

I'd rather have democracy thanks :p

Actually an enlightened despot is oftentimes better...then again MS hardly fits that profile...
 
Joe DeFuria said:
And the answer is: 'It's the software, stupid!' ;)

When exactly did Lotus 1-2-3 arrive on the Amiga?

And then we are asking why no-one is using pixel and vertex shaders in their apps... to which the answer is?

"It's the hardware, stupid!"

(That is, without the installed hardware base, almost no-one is willing to write the software.)

Seems quite circular to me.
 
flf said:
Joe DeFuria said:
And the answer is: 'It's the software, stupid!' ;)

When exactly did Lotus 1-2-3 arrive on the Amiga?

And then we are asking why no-one is using pixel and vertex shaders in their apps... to which the answer is?

"It's the hardware, stupid!"

(That is, without the installed hardware base, almost no-one is willing to write the software.)

Seems quite circular to me.

Circular to an extent. It wasn't that long ago that the first games started coming out where T&L was a requirement. And how long has T&L been around?
 
Back
Top