OpenGL 3.2 vs. Direct X 11

I’m not sure if this is the right forum for this, so if there is a better place to ask it let me know and I can repost.

Will I get significantly better performance out of OpenGL 3.2 or DirectX 11?

Background: I have a fairly extensive 3D graphics application I wrote years ago in OpenGL 2.1. Years went by and I abandon the maintenance of the application for some time. Now I’m tasked to rewrite the application and have to make the decision once again to write it in OpenGL or Direct3D. I have written some c++ openGL and GLSL in the past, but I know my learning will need to be brought up to speed with the latest changes. I have 0 experience in DirectX. Most of the reviews I have read seem to imply that DirectX has had better performance for the past few years, but I couldn’t find many that took 3.1 or 3.2 into account just the initial release of 3.0 which I know a lot of folks found to be sub par.

I would rather use OpenGL for the simple fact that I have used it in the past so I at least have some working knowledge of how to do it. I know I would have a bit of catching up to do, but some knowledge is better than none. Ultimately performance of massive 3D rendered scenes is more important then learning time. I know this is the OpenGL forums, but please give as unbiased and detailed an answer as possible. Thanks for any help you can provide.

I’m not super concerned about portability, for reference the application will be running primarily on PC’s running vista64 bit. The graphics card is a 9800 GTX

thanks,
Nick

well OpenGL 3.2 and dx11 is pretty much the same, save for two things dx compute shader and tesselation, the former can be replaced by OpenCL while the latter will arrive pretty soon in the form of an extension, i think amd already have one, but until both of the major IHVs has the hardware just forget about it for either openGL or DX11.
As for the performance we just don’t know as neither are out yet and it takes a while before people write optimal apps for them.
Just don’t expect magic speedups though.

I would suggest that you stick with openGL as it’s not a huge step to convert to opengl 3.x
just convert immediate mode to VBO/VAO, use shaders for everything and preform all rotations and translations manually.

I would also take into account what your target is : DX11 would mean Win Vista and up but I’m sure you already knew that. You can use whatever video card you want. Even crappy Intel.

GL 3.2 means DX10 cards only. nVidia and AMD only.

It would be nice if someone makes a benchmark to show the difference in performance.

In other words just rewrite everything!

well not entirely. you could make a class that looks almost like immediate mode but builds an vbo the first time and then renders it.
same thing with rotation and translations.

one motivation you have is that it will in the end be way faster.
Also, if you where doing it in direct x, you would still have to do the same thing, at least openGL gives you the option of converting it gradually.

Thanks for the thoughts folks. I think I will attempt to stick with OpenGL for now as I’m fairly comfortable with everything I need to do to migrate to 3.2 compatibility. If I’m unsatisfied with the results then I may suck it up and port it to D3D. Thanks again!

-Nick

Please stick to OpenGL.

DX11 means indeed Win Vista and up. But it doesn’t mean whatever video card you want. It means DX11 class hardware and none exists at the moment. AMD is expected to release DX11 hardware in September or October, but from nVidia it has to be seen whether they make it before the end of the year.

DX11 support older hardware, too. You just can’t use all features. There are six well defined feature levels for different hardware.

DX11 support older hardware, too. You just can’t use all features. There are six well defined feature levels for different hardware. [/QUOTE]

That’s correct I’m not concerned with all of the new features and for all intents and purposes I could have stated DX10. I just used DX11 as by the time my learning curve is rectified DX11 will be out.

Also as I stated portability isn’t an issue. I’m planning to use win-vista or newer and I haven’t purchased the card for the machine it will run on yet so I can purchase whatever is needed. The development machine runs a 9800GTX /Win Vista.

thanks for the advice folks.

Please use OpenGL. Even if you don’t particularly need portability it I think it is a poor idea to code software for one system only, unless there are time (or other) constraints that keep you from doing so. Updating your program to use 3.2 will make it possible to work on multiple systems, whereas using DirectX would tie it to Microsoft’s OS. I also think that learning DirectX to do your program is going to be very time consuming. If you already know OpenGL 2.1 then I wouldn’t think it would be night and day doing OpenGL 3.

If more application developers (game developers for example) would use OpenGL more we would see more games coming out for Mac OS X and Linux. Many home users might quit using Windows altogether if they had a big enough game library to choose from. Games won’t help businesses that need Microsoft stuff but it could definitely help with the home users.

I have a lot of thoughts on the “OpenGL vs DirectX” subject last few days.
I have to develop a new 3d engine(at work) and I’m considering moving the old one to DirectX.I think that DirectX engine will be better supported on average customer computer than newer OpenGL extensions.Best solution would be supporting both OpenGL and DirectX,but due to the deadline it’s not an option.

I would appreciate others opinion on this specific subject(OpenGL vs DirectX when you don’t know what will be your customer computer graphic card)?

Thanks

If your customers have an Intel chipset, it can be a problem since the GL drivers are no good. I heard the same for the D3D counterpart of the D3D counterpart is better off.

If you are expecting users with ATI and nvidia, then there is no problem either way.