Differences between caddy drawing and game 3D
Not everyone learns 3D to play games, but nowadays, most of the 3D learning materials are in the background of games, which may lead to a lot of people taking the CAD route to the wrong path.
In the gaming field, 3D is evolving towards real-time film-level effects, emphasizing visual effects. In order to achieve sufficient runtime performance, we need to put as much computing as possible into the preparation phase for preprocessing. In the CAD field, the draw line capability is far more important than the visual effect. models often need to be edited in real time, which requires a high throughput for a single triangular plane and precise selection operations in a large number of lines and surfaces, in terms of hardware acceleration requirements, OpenGL 1.2 is basically enough.
The rapid development of GPU Technology over the years mainly aims at games. However, most of these improvements have little impact on CAD. This is why traditional CAD vendors on the OpenGL ARB Committee are not keen on improving OpenGL. Unlike gaming code rewriting once in a few years, CAD programs do not want to be rewritten frequently. They need a stable API, preferably for 50 years, but new hardware needs to provide better performance. Most of these software recommends Professional-level graphics cards. One feature of Professional-level graphics cards is that the metadata throughput is very high.
Of course, CAD sometimes requires a fascinating finished image, but it generally uses advanced offline rendering and takes more time to achieve a far better real-time rendering effect. The software offline Renderer seems to be another field. For industrial 3D, a ready-made offline Renderer is usually used instead of writing one by yourself.
However, with the rise of General GPU computing, it has also brought some new possibilities for the CAD field. A large amount of computing, especially the triangular surface, may be processed by the GPU. However, this should not lead to architectural changes, but only some underlying API implementation optimization, Because OpenGL is a good industrial 3D drawing abstraction layer.
However, this is in conflict with the demand in the gaming field. In the debate, OpenGL ARB once proposed to divide it into two profiles: a cad profile and a game profile. But this proposal was rejected because people don't want two OpenGL. The debate lasted several years and finally made progress. The new solution was a core profile for the new hardware acceleration architecture and a compatibility profile compatible with the old program. But this is still not ideal for the CAD field, because it means that there will be fewer and fewer support for the compatibility profile, and they will have to rewrite the rendering code sooner or later. As to why CAD vendors accept this proposal, we can see from a report published by Autodesk that they are suffering from varying OpenGL-driven quality. OpenGL is a product before the hardware acceleration age. It has complicated functions and not all functions can be accelerated. As a result, many driver implementations not only have many bugs, but also have different behaviors. This results in a very high cost of testing and remediation, so that after 3 DSMAX 7, d3d is used by default to accelerate the backend. In this way, a new simplified OpenGL core profile is a reasonable choice.
However, not all CAD software can switch the rendering backend like 3dsmax, with a rendering abstraction layer. In addition, the core profile API is very close to the hardware and is not suitable for direct use for high-level rendering logic. In general, the traditional OpenGL API itself is a good abstraction layer for CAD, and it will still be, the CAD program built on OpenGL does not need a new abstraction layer. Therefore, OpenGL compatibility profile is actually a traditional OpenGL API implemented using core profile API, which is a standard implementation of this abstraction layer. If the graphics card does not provide compatibility profile, the CAD manufacturer can still provide this implementation by itself, without rewriting the previous code, and can use the acceleration function of new hardware in the future. In addition, due to the development speed of 3D hardware, d3d has been updated in less than a few years, and each generation is completely incompatible. the OpenGL Core Profile close to the hardware also has this risk. Compatibility profile provides a security mat for CAD software. You only need to replace different implementations.