Giving up on SDK Rendering
Hi,
I tried to adapt my engine to 0.4.3 SDK rendering (DX11). But I am giving up on that approach due to the reasons listed below. I would love to get feedback. In particular from somebody who is happy with SDK rendering and is using it with his own example app or engine.
Documentation. Some parts are really good. Other part I don't like at all. Worst thing is code snippets. Much too often code snippets are more a documentation to example app structure where it should document SDK API and concepts.
Example Apps. While I perfectly understand the reasoning to do both DirectX and OpenGL in one and the same example project, it adds to hide the tech details I need to know. Please excuse me egoism, but as a DirectX developer I am not interested in Oculus concepts of dual world programming. I would much prefer examples only for DirectX which then could be simpler. I think I would have the same reasoning if I would be an OpenGL developer.
Debugging. Using Graphics debugging does not work with SDK mode for me. I get spurious exceptions in my own project when I try to start the graphics debugger. Even the World Demo does not allow for graphics debugging because I cannot capture a screen. (But I didn't see exceptions - obviously I am doing some things wrong in my project).
Architecture. This is the killing argument for me. I failed to get a clean separation between SDK rendering and my engine code. Too much happens under the hood in LibOVR that interferes with my own architecture. Some shaders are set to null, strange things happen with the swap chain, for every frame DirectX complains about shader resource being still bound on output. The list goes on. Maybe if we had a very good documentation about all details that need to be set before calling ovrHmd_EndFrame it would still be ok. But I felt lost trying to find out all the details myself.
I will now return to client rendering. Some general problem like documentation will still stand. But it worked good for DK1 and I am confident to also get it working with DK2 and avoid most of the problems above.
I tried to adapt my engine to 0.4.3 SDK rendering (DX11). But I am giving up on that approach due to the reasons listed below. I would love to get feedback. In particular from somebody who is happy with SDK rendering and is using it with his own example app or engine.
Documentation. Some parts are really good. Other part I don't like at all. Worst thing is code snippets. Much too often code snippets are more a documentation to example app structure where it should document SDK API and concepts.
Example Apps. While I perfectly understand the reasoning to do both DirectX and OpenGL in one and the same example project, it adds to hide the tech details I need to know. Please excuse me egoism, but as a DirectX developer I am not interested in Oculus concepts of dual world programming. I would much prefer examples only for DirectX which then could be simpler. I think I would have the same reasoning if I would be an OpenGL developer.
Debugging. Using Graphics debugging does not work with SDK mode for me. I get spurious exceptions in my own project when I try to start the graphics debugger. Even the World Demo does not allow for graphics debugging because I cannot capture a screen. (But I didn't see exceptions - obviously I am doing some things wrong in my project).
Architecture. This is the killing argument for me. I failed to get a clean separation between SDK rendering and my engine code. Too much happens under the hood in LibOVR that interferes with my own architecture. Some shaders are set to null, strange things happen with the swap chain, for every frame DirectX complains about shader resource being still bound on output. The list goes on. Maybe if we had a very good documentation about all details that need to be set before calling ovrHmd_EndFrame it would still be ok. But I felt lost trying to find out all the details myself.
I will now return to client rendering. Some general problem like documentation will still stand. But it worked good for DK1 and I am confident to also get it working with DK2 and avoid most of the problems above.
