What is DirectX? How does it work? Versions, History and Troubleshooting