OculusWrap project discontinued

Coordinator
May 12, 2016 at 3:38 PM
Edited May 12, 2016 at 3:39 PM
In the beginning of April 2016, I decided to cancel my preorder for the Oculus Rift CV1 and ordered an HTC Vive instead. The Vive has just arrived, which means that I will no longer keep my Oculus Rift DK2 and will therefor no longer be able to continue development of the OculusWrap project.

I hope that the work I did has helped you develop new great virtual reality software and I look forward to meeting you all in VR, in a future not too far away.

Best wishes to you all,
Mort
May 14, 2016 at 8:16 PM
Uuuu that's sad news :( Very sad :(
Anyway, thank you very much for your ongoing support, fast responses and for being so kind to start this project.
If you don't mind, I would like to take over this project and continue supporting it further (however I will concentrate more on OpenGL side, as I'm not really familiar with DirectX stuff).
I'll put it on my GitHub account, as I prefere that platform.
I will let you know when the repo is ready, so that you could place the info here for other people interested in it.
Of course still only, if you don't mind.

Cheers,
Julian
Oct 11, 2016 at 7:47 AM
Hi

I would like to try to update OculusWrap to the last version of the runtime (currently 1.8 I think), and I would like to know how did you created OculusWrap...

Did you use a tool to automatically convert the C headers to NET? or you did the process manually?

When a new version of the runtime was released, which process did you followed to upgrade the wrapper?

Any pitfalls to take into account?

Thanks in advance

V
Coordinator
Oct 12, 2016 at 2:01 PM
Hi VicViper,

I am not familiar with a tool that can automatically reliably convert C headers to .NET.

I have created the library by hand, by going through every public method in the OvrLib library and creating C# methods that matched the signature of the C headers.

In the cases where it has not been possible to create C# headers matching the C signature, I have had to create methods that allocated unmanaged memory, copied data from the managed memory to those memory objects, passed the data into the C methods and cleaned up the memory when it was no longer in use.

It has been important to me to also include XML documentation for every method, which has also been a challenge, as the LibOVR library contains several pieces of incorrect information as well as code samples which was not identical to the C# implementation that was created.

On every new version of the LibOVR library, I have used the WinMerge tool to compare differences in the previous version of the library to that of the newest version. This has shown me which signatures had changed, which new data structures had to be created or modified and which XML comments had to be updated.

To test if each wrapper method has been working as intended, I have created unit tests to test each method. Stepping into each test method allowed me to determine if the method arguments I created had matched the signature of the C headers, such that I could see that the values I passed in was also the values that were being received in the unmanaged code.

After creating unit tests for all public methods, I updated the wrapper classes to provide a developer friendly variant of the static methods, such that developers didn't have to pass in the same arguments every time. These wrapper classes were tested by using them in the DirectX sample that was contained in the project. Once all unit tests succeeded in both x86 and x64, all XML comments had been filled out, wrapper classes had been created and used in the DirectX sample, I would update the version numbers of each assembly, run the unit tests again and commit the changes, with comments indicating the LibOVR matching the code. After the code was committed, I would update the code samples to match that used in the source code, update the version number of the code sample, ensure that the code sample contained no TFS files, zip the sample code, unzip it to test that it worked and finally upload the new version and create a new page for the release.

As you can imagine, updating the library is a time consuming process :)
Dec 6, 2016 at 2:11 AM
Hi Mort,

your wrap is helpful for me, I have developed a project based your wrap.thanks for your work.
you have said that you are starting work with HTC VIVE .
I am going to work with HTC vive too,but I dont familiar with C++,and I want to use your wrap .

Do the htcvive wrap is ok?where can i download it.
Looking forward your replay , thanks.

Best Regards,
xiaofan,
Dec 6, 2016 at 9:28 AM
Hi Mort,

your wrap is helpful for me, I have developed a project based your wrap.thanks for your work.
you have said that you are starting work with HTC VIVE .
I am going to work with HTC vive too,but I dont familiar with C++,and I want to use your wrap .

Do the htcvive wrap is ok?where can i download it.
Looking forward your replay , thanks.

Best Regards,
xiaofan,