|Behind the stage: The technology|
|The render engine|
Some of you might expect an annunciation of a "cutting-edge new 3D engine" now - sorry for disillusion, there is no "magic" at all behind this tool ...
Like thousands of other computer graphics developers that are searching for an easy entry to learn DirectX, I downloaded the SDK and found the Direct3D common files framework. As I mentioned before under the topic "About->Development", the "predecessor" of SolidShaderTool was a demo application to demonstrate the implementation of a diffuse & specular bump mapping effect rendered with DirectX 8.1 - it utilized the Direct3D framework, of course.
The framework turned out to be a user-friendly, stable and fast environment, so I did not see any reason to "reinvent the wheel" and write my own renderer. So even SolidShaderTool's rendering view is derived from the "CD3DApplication" class which handles all the annoying but inevitable work of enumerating devices, display modes and capabilities. Nevertheless, I had to adjust and extend it with different methods to build a render engine that fulfills the needs of a shader development environment.
While the bump mapping demo consisted of a single window with a Direct3D view and a menu bar, there was no discussion from the beginning on that SolidShaderTool's graphical user interface would be more complex and should be much more comfortable, intuitive and efficient.
For the implementation of dialogs, list/tree/tab views and standard interaction elements like buttons you need the help of an external collection of classes that provide these functions. The usage of DirectX 8.1 as render API made a discussion about platform independency obsolete. Furthermore, I wanted to develop SolidShaderTool with Microsoft's Visual Studio™, so it was self-evident to use the MFC (Microsoft Foundation Classes) for the GUI elements.
A decision I did not regret - the MFC integrate themselves seamless into the windows programming model and its views and interaction elements have the same "look&feel" like a normal windows operating system. As a bonus, the MFC provide several very useful helper classes like type-secure pointer lists and arrays, string and string queue management, context menus and file operations.