Oh, the tangled web of 3D CAD hardware and software. It spans between the cracks of ultimate compatibility for the software, ultimate confusion for the user and sticks to you right after walking through the door of deciding what computer to buy.
SolidWorks uses the OpenGL graphics API. Other CAD companies have decided to use Direct3D. It’s an issue we’ll get into, but take a look how the discussion came about and the difference of opinion in the 3D CAD community.
I’ve just read one of the most impressive documented responses from a development perspective on OpenGL vs. Direct3D I’ve ever seen. Why does this matter to you as a SolidWorks user? SolidWorks uses OpenGL which means you pay more for a Graphics Processing Unit (GPU), which means paying more for a computer. But is this a bad thing?
It started from a question by an AutoDesk Inventor user in the mcadforums on if OpenGL was supported on Vista or XP64bit (PDF). Then, Peter Yodis posted a link to it in the SolidWorks Forums. Then, Charles Culp let everyone know about it on Twitter… THEN, Matt posted about SolidWorks and OpenGL on his blog.
It’s all made for some pretty interesting commentary on GPU technology and really shows how you can get involved in conversations about current technology very quickly with other SolidWorks users.
That being said, here is the SolidSmack version in all of it’s regurgitated glory, but with a few extra spicy aspects to ponder. At the very least check out these key points and tell us what you think in the comments. Does SolidWorks need to switch to the DirectX3d API?
Some key points:
- Direct3D is a Microsoft Windows API typically used for gaming.
- OpenGL is an open standards API compatible with Windows, Linux and Mac typically used for high-end graphics.
- OpenGL Graphics Processing Unit (GPU) cost more than DirectX3D gaming cards.
- You can soft-mod most Direct3D gaming cards (nVidia GT series) to get OpenGL (nVidia FX series) functionality.
- SolidWorks is currently only compatible with Microsoft Windows.
Comparison of OpenGL and Direct3D
In general, Direct3D is designed to be a 3D hardware interface. The feature set of Direct3D is derived from the feature set of what hardware provides. OpenGL, on the other hand, is designed to be a 3D rendering system that may be hardware accelerated. These two APIs are fundamentally designed under two separate modes of thought. The fact that the two APIs have become so similar in functionality shows how well hardware is converging into user functionality.
Even so, there are functional differences in how the two APIs work. Direct3D expects the application to manage hardware resources; OpenGL makes the implementation do it. This tradeoff for OpenGL decreases difficulty in developing for the API, while at the same time increasing the complexity of creating an implementation (or driver) that performs well. With Direct3D, the developer must manage hardware resources independently – however, the implementation is simpler, and developers have the flexibility to allocate resources in the most efficient way possible for their application. – Wikipedia: Comparison of OpenGL and Direct3D
In my opinion, side by side, I like the way OpenGL graphics look much better that the way Dierect3D graphics look. If SolidWorks was ever to be developed cross-platform for Mac, Linux and Windows, OpenGL would be the API to use. I don’t like paying more, which is why I’ve soft-modded some nVidia GT cards. If SolidWorks development decided to go with Direct3D, I doubt the software price would come down, even if there was less QA needed for the Direct3D compatibility. But we would be able to spend less on a GPU/computer.
Highlights of Autodesk Inventor OpenGL to DirectX Evolution from “Norbert” – Autodesk Inventor Graphics Team
When we use OpenGL, we have found over the past many years (and still today) that we need to invest in a large, significant amount of QA… and use OpenGL almost on the level of 1997 graphics
With Direct3D, our QA team can focus on testing our code and finding defects in our graphics code, instead of having to spend all their time just verifying that the graphics HW vendors have done their job correctly to produce an OpenGL graphics driver that actually works.
Direct3D works identically on x64 as on x86
In …all defects that we see with the use of Direct3D…the problem is in our Inventor graphics layer code and the way we are using Direct3D in Inventor, not in the graphics HW vendor’s Direct3D graphics driver.
when we use OpenGL, we never use the graphics HW for the rendering of any offscreen images…we are using the Direct3D graphics HW for all offscreen rendering.
we have decided to focus on supporting Direct3D where we can focus the QA efforts on testing our own code and actually redirect some of the people currently spending all their time testing OpenGL graphics drivers to start testing our own graphics layer code
we can add new graphics features and functionality because we know that we will have the QA resources available to test the new features … and we know that offscreen rendering will match onscreen rendering.
where OpenGL graphics drivers actually disable some OpenGL functionality on consumer, game, laptop, and chipset HW so you are forced to purchase the more expensive workstation graphics HW, just so your OpenGL graphics works correctly. For example, if you are no longer required to spend $1000 to $2000 to simply have graphics HW that works, but can instead purchase a $100 to $350 game card … then you can take the $900 to $1650 you saved and spend it on other system aspects that might have a much more significant impact on your user experience with Inventor, such as having 8 GB of RAM instead of 4 GB (a real 64-bit system!)
I think I can stop right there. He goes on to explain some of the differences and performance issues. But I’d like to get your take on it. Does it matter to you?