I am working on a DX12 port for Urho3D and I dont get the use of void pointers everywhere in the graphics framework. What do you achieve from this? Why dont we just put the actual API data types instead of void pointers? Sure it will increase the number of ifdefines but at least the framework will be a lot more clear and will help to add new APIs easily.
For example: In DX12, we need to store the CPU handle of a SRV. Now to follow the framework style, I need to add another void pointer to the texture class and then go around casting it everywhere as a CPU handle in the DX12Texture class implementation.
Urho3D is a developer’s engine. What’s the point of hiding everything from the user? I am pretty sure anyone using Urho won’t misuse the API.
Anyways, I dont care if we use annoying opaque types (void*) or nice API types, I will soon push the DX12 port to a repo