Members - Reputation: 103
Posted 03 April 2012 - 05:15 PM
Members - Reputation: 1493
Posted 04 April 2012 - 08:27 AM
Most of the more interesting bits, like shader code, work fundamentally the same way in either since it's a separate language altogether. The theory and mathematics behind common techniques are also going to be the same.
Members - Reputation: 104
Posted 06 April 2012 - 02:34 AM
This could prove to be a long and tedious task, even though the designs are incredibly similar as InvalidPointer pointed out.
If you don't understand how it works in C++, and don't have the time to learn it, the only other option would be to buy conversion software.
A quick google search gave me this link: http://tangiblesoftwaresolutions.com/
But keep in mind that there is no universal solution, and you would (at least) still need to know the differences between managed and unmanaged code in order to get the translated code to work as intended.
Best of luck!
Members - Reputation: 207
Posted 06 April 2012 - 09:28 AM
As for your C++/C# question: The biggest thing to remember is that C++ is unmanaged, meaning you can place objects in memory and access them through pointers. But this also means that YOU are responsible for removing them from memory and allocating resources manually. In C# you don't have to worry about memory clean up and resources too much, the CLR does it for you... but on the down side, you don't have direct access to the memory (pointers) because the CLR is constantly moving items around in memory trying to be as efficient as possible. It determines when something should be removed from memory. So if your method's variable fell out of scope in your code doesn’t mean the CLR is going to clean it up immediately.
As long as you understand this concept you should be good to go. C# syntax is very very similar to C++.
Members - Reputation: 1493
Posted 07 April 2012 - 09:29 PM
The biggest thing to remember is that C++ is unmanaged, meaning you can place objects in memory and access them through pointers. But this also means that YOU are responsible for removing them from memory and allocating resources manually.
Modern C++ renders this a trivial problem with shared_ptr/intrusive_ptr and friends. Proper application of RAII principles can even render them redundant. C++ is a very complex *language*; memory management is a fairly trivial problem (as proven by the garbage-collection mechanisms in C#!) and doesn't contribute as much as people claim. I blame out-of-touch academics there :|
tl;dr it's the little innocent-looking bits like side effects in function arguments (the calling order for these is unspecified, the compiler can do them basically whenever it feels like so long as it happens before the actual function call. Have fun debugging!) that will really make you want to pull your hair out. Interested parties are suggested to give Washu's C++ quizzes a gander and/or slog through the new C++11 standard.
EDIT: New! Links!
EDIT 2: And, speaking of C++11, compilers are now allowed to implement garbage collection if they so desire.