Forum Discussion
Krisper
13 years agoExplorer
Understanding the SDK
This is a rather broad question. I have a long way to go to catch up and understand the SDK properly. Maybe I shouldn't bother and just work with UDK or Unity and leave the real stuff alone, but I would really like to know what is going on when I go through the code.
I have been a hobby programmer for years, and I am experienced with website coding. I have also been playing with Unity for a number of years. Last year I finished an IT degree and while doing that I did units in C, C#, C++, java etc, but those units really only scratched the surface and were mostly only working in console applications.
So can anyone give me some tips on what to learn in order to catch up? Any book recommendations, tutorials etc would be greatly appreciated.
I have been a hobby programmer for years, and I am experienced with website coding. I have also been playing with Unity for a number of years. Last year I finished an IT degree and while doing that I did units in C, C#, C++, java etc, but those units really only scratched the surface and were mostly only working in console applications.
So can anyone give me some tips on what to learn in order to catch up? Any book recommendations, tutorials etc would be greatly appreciated.
9 Replies
- JustinHonored GuestYeah, unfortunately, college doesn’t do a good job teaching students to program. Unless you go to a specialized school, they usually just teach you the language and not much else. If you want to do 3D game programming you will need to learn either Direct3D or OpenGL. If you choose Direct3D, you will also need to learn the Win32 API. Personally, I would recommend OpenGL because it doesn’t have a super steep learning curve like Direct3D does. I assume you know at least a little C++, so here is a link to some YouTube videos to get you started with OpenGL. Be warned, the authors accent is a little strong, but you’ll get used to it after a while.
http://www.youtube.com/watch?v=FhQBsV-zdqI - KrisperExplorerThanks Justin, appreciate the advice. I think I will need to learn Direct3D and the Win32 API. Do you think it would help going through some OpenGL tutorials first? Or should I dive straight in to Direct3d?
- atavenerAdventurer
"Krisper" wrote:
Thanks Justin, appreciate the advice. I think I will need to learn Direct3D and the Win32 API. Do you think it would help going through some OpenGL tutorials first? Or should I dive straight in to Direct3d?
OpenGL if you intend to be cross-platform. Though I guess there are some D3D wrappers of OpenGL?
Here's slides for Valve's "Porting Source to Linux" presentation, which has a lot of material about D3D vs OGL...
https://developer.nvidia.com/sites/defa ... 0Linux.pdf
There's also 1h recording of their presentation on youtube.
Note that the Oculus SDK is fairly minimal as a base to work from. It's not a game-development SDK -- it's mostly to work with the HMD or other devices Oculus produces -- intended for those who have a "game engine" of choice (or want to make their own). On the other hand... it does have enough to be the seed of a game engine -- there are a bunch of math functions, containers, messaging... You could probably learn a few things just starting in the Src/Kernel directory and looking through some files (then reading up on parts which don't make sense). - JustinHonored Guest
"Krisper" wrote:
Thanks Justin, appreciate the advice. I think I will need to learn Direct3D and the Win32 API. Do you think it would help going through some OpenGL tutorials first? Or should I dive straight in to Direct3d?
It certainly wouldn't hurt. Starting with OpenGL would help you get a feel for programming 3D graphics and it would probably feel more rewarding in the beginning. The main disadvantage of going the Direct3D route is that it only works with Microsoft platforms and you must learn either the Win32 API or the new Windows 8 interface. - KuraIthysHonored GuestI can definitely say that you need to learn some of the fundamentals of 3d graphics regardless.
I've been learning about DirectX since about 1998, and while I'm fairly competent with 2d graphics work, I have a lot to catch up on to really get any 3d work done.
(Though I do know a lot of the principles, theoretical knowledge is still quite far removed from practical stuff.)
But yes. DirectX does require knowing a lot about the windows SDK on top of directX. And the windows SDK can be a bit of a headache at times. (Still, on the plus side, you learn about general windows application development too, which can be useful at times.)
My favourite book series is Andre LaMothe's 2 part series 'Tricks of the windows game programming gurus'. - They're old, but pretty interesting.
(The second volume has a slightly different name).
The first volume is from 1997, and the second is 2001, I think.
Obviously, that might seem really out of date, and indeed if you want to know specific API related things you could have issues with it. (the original book using mostly DirectX 6.21)
But, what I like about them is despite seemingly being about the windows SDK and DirectX, what they actually cover is the raw algorithms themselves.
The first volume is 2d graphics, and includes such things as sprite blitting, drawing lines, sounds, collision detection, etc.
But it tells you how to do it yourself. NOT how to make an API call to do it for you.
The second volume takes the work of the first, then builds a 3d engine on top of it.
There's almost no new DirectX or windows related material in it, because it tells you how to build a SOFTWARE renderer.
So, things like how you'd create polygons, do texture mapping, lighting, etc if you had no hardware 3d support at all.
Now, nobody would do that for anything serious these days, but you can learn a huge amount about what's going on by seeing how to implement this stuff for yourself.
It certainly makes it easier to understand what openGL, DirectX and 3d hardware are doing when you know the principles of how to do it in software... - KrisperExplorerThanks for the advice guys. I think I will take a look at those books you recommended KuraIthys, I understand some of the basics, but starting from the bottom will definitely help. Lots of learning to do.
- cyberealityGrand ChampionIf you want to work directly with the SDK, then you should have a good understanding of C++ if you want to get anything done.
Here are two really good books on the C++ language. Although they have similar names, there is no relation.
C++ Primer Plus (Stephen Prata) (read this first)
C++ Primer (Stanley B. Lippman)
To get up to speed on DirectX the Frank Luna series seems like a good place to start.
Introduction to 3D Game Programming with DirectX 11 (Frank Luna)
You will also want to understand the math involved in 3D graphics (vectors, matrices, quaternions, etc.). These are good books for that.
3D Math Primer for Graphics and Game Development (Fletcher Dunn)
Mathematics for 3D Game Programming and Computer Graphics (Eric Lengyel)
Also , for a great overview of rendering algorithms and techniques, this is a must read text:
Real-Time Rendering (Tomas Akenine-Moller, Eric Haines and Naty Hoffman)
Of course, these books with just lay the foundations and won't teach you everything you need to know, but certainly not a bad place to start. - atavenerAdventurerVideos to watch while eating lunch: http://redd.it/1bwjuh (Math for Game Developers)
- KrisperExplorer
"cybereality" wrote:
If you want to work directly with the SDK, then you should have a good understanding of C++ if you want to get anything done.
Here are two really good books on the C++ language. Although they have similar names, there is no relation.
C++ Primer Plus (Stephen Prata) (read this first)
C++ Primer (Stanley B. Lippman)
To get up to speed on DirectX the Frank Luna series seems like a good place to start.
Introduction to 3D Game Programming with DirectX 11 (Frank Luna)
You will also want to understand the math involved in 3D graphics (vectors, matrices, quaternions, etc.). These are good books for that.
3D Math Primer for Graphics and Game Development (Fletcher Dunn)
Mathematics for 3D Game Programming and Computer Graphics (Eric Lengyel)
Also , for a great overview of rendering algorithms and techniques, this is a must read text:
Real-Time Rendering (Tomas Akenine-Moller, Eric Haines and Naty Hoffman)
Of course, these books with just lay the foundations and won't teach you everything you need to know, but certainly not a bad place to start.
Thanks for taking the time to reply Andres, I have a basic knowledge of C++ and other principles, but I am leagues behind most of the other people on this forum. Definitely going to start now to fix that."atavener" wrote:
Videos to watch while eating lunch: http://redd.it/1bwjuh (Math for Game Developers)
Looks like a great series of videos, thanks.
Quick Links
- Horizon Developer Support
- Quest User Forums
- Troubleshooting Forum for problems with a game or app
- Quest Support for problems with your device
Other Meta Support
Related Content
- 3 years ago
- 4 months ago
- 4 years ago