Is this a Good site to learn DirectX

Started by
3 comments, last by InvalidPointer 12 years ago
SO I searched around and I found this site http://rastertek.com/tutindex.html its looks really cool since they also have Directx 10 and 9 there just in case I wanto try those out. But I'm not sure if this would be a good way to learn SlimDx at the same part. What I really want to know is what part of the tutorials will i be taking and translating into SlimDX?? Since I can't understand most of the things there with C++, I also don't wanna spent time learning the syntax which would be complicated while learning 2 other things at the same time. Please respond
Advertisement
The syntax of C++ is very, very similar to C#, I'd say you have bigger problems if that's an issue. On the brighter side, SlimDX was architectured to follow the design of unmanaged D3D very closely. While there are some subtle changes and more idiomatic code, if you can understand how device state is manipulated in either API you'll at least have an idea of where to start with the other.

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.
clb: At the end of 2012, the positions of jupiter, saturn, mercury, and deimos are aligned so as to cause a denormalized flush-to-zero bug when computing earth's gravitational force, slinging it to the sun.
I really enjoyed those tutorials. As far as translating them goes, you would first need to research all of the small differences between unmanaged D3D and SlimDX.
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!
Yes, this website has a ton of information regarding DirectX and most of the people I've met on here are polite and helpful. I usually come here for help after I've done everything I can do to solve a problem myself.

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++.

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.
clb: At the end of 2012, the positions of jupiter, saturn, mercury, and deimos are aligned so as to cause a denormalized flush-to-zero bug when computing earth's gravitational force, slinging it to the sun.

This topic is closed to new replies.

Advertisement