Will Learning Direct3D help Understanding Open GL Better?

Started by
12 comments, last by DragonBooster 10 years, 3 months ago

Hi guys.

Recently i have going through a lot of resources with learning Open GL, however it stil feels i do not understand how it works. When i try to memorize code that i did with Open GL and try to understand how it actaully works. The next day i seem to always forget it, and it kept annoying me.

I tried all of the resources in my other thread and read all of them thoroughly. But i still do not understand anything associated with Open GL.

Despite the fact that i did not like Direct3D in those previous threads, i never gave it a fair try so i decided to go with Open GL. However, i am lost in the sea with Open GL even through the rough schedule of learning Open GL 5 Hours a day.

However, Direct3D's Documentation is better and is much more understandable. So i was thinking, if i learn DirectX first, would that give me a headstart at learning Open GL? Currently to be honest, i have gotten nowhere so far with the current resources for Open GL. But i kind of got an understanding with Direct3D, especially after purchasing Introduction to game programming with Direct X10 which is one of the best book's for 3D game programming.

For example after learning C++, it became much easier to understand other programming languages for me (however i strongly prefer C++ as my main language). Would that be the same with DirectX and Open GL?

Or should i learn 3D computer graphics before going into any of them?

Advertisement

They've become increasingly similar over time, though with OGL you don't have to deal with COM.

As you mentioned, DX has more thorough documentation, so what I'd recommend is using DirectX to learn 3D graphics, then working with OpenGL once you feel more comfortable with the process. In the end, they're both just APIs that are used to expose the 3D drawing functionality of the system. Luna's book is pretty popular, so you're probably on the right track.

void hurrrrrrrr() {__asm sub [ebp+4],5;}

There are ten kinds of people in this world: those who understand binary and those who don't.

Learning OpenGL if you already know DirectX is definitely easier, and it is very understandable to find OpenGL a pain to learn. There are a lot of options to make things easier (glew, glm, etc.), but at first glance it's just confusing and often a bit overwhelming. And the spec docs are definitely written under the assumption you have a basic grasp of the concepts already.

You could also use an engine like Unity and ignore the APIs at first. You'll likely pick up a lot of knowledge about how graphics work, and you'll also wind up having a better idea of how to manage the complexity in your own code if you opt not to use a graphics engine later. You'll also get to actually work on the game or whatever you're making quicker, which should help keep you motivated.

(OpenGL is one word).

Your experience of being able to pick up DirectX more easily is typical.

OpenGL has many deprecated features and it is very hard to know what version any given tutorial you follow is using. With the amount of back support OpenGL tries to maintain it is virtually impossible to be sure you aren’t using anything deprecated, especially since much of your learning will come from random online tutorials.

It’s also a state machine, meaning unrelated parts of your code may be affecting each other seemingly randomly or illogically. That is not a happy place for someone who is trying to learn graphics programming.

Finally, if you start with OpenGL you will incorrectly “learn” that samplers are a part of textures rather than their own separate thing. Ultimately learning OpenGL first may end up being a disservice to yourself if your goal is to understand general graphics programming.

It should generally be easier to learn Direct3D first. It is object-oriented, well documented, comes with samples, and runs the same on every machine (except for those with 1 driver version of 1 specific ATI card).

OpenGL becomes much easier once you have an understanding of graphics principles you learn from Direct3D.

Or should i learn 3D computer graphics before going into any of them?

That would probably be the worst thing you can do.

Reading theory in books means nothing. Hands-on interactive application is the only way to really learn graphics programming.

L. Spiro

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

Glad to know that i am on the right path because what you guys have just said is exactly what i was thinking of doing, Thanks a lot for your advice guys.

Or should i learn 3D computer graphics before going into any of them?

That would probably be the worst thing you can do.

Reading theory in books means nothing. Hands-on interactive application is the only way to really learn graphics programming.

L. Spiro

Thank you for clearing that out.

I am a practical person that gets things done by doing, i am glad to know that graphics programming is mostly practical since that will accelarate the learning process for me. So again Thanks :).

You could also use an engine like Unity and ignore the APIs at first. You'll likely pick up a lot of knowledge about how graphics work, and you'll also wind up having a better idea of how to manage the complexity in your own code if you opt not to use a graphics engine later. You'll also get to actually work on the game or whatever you're making quicker, which should help keep you motivated.

I was planning on using Unity since i could focus mostly just creating the game. However, I want to be able to be a strong programmer who understands how 3D game's work, i also like the idea of creating my own engine because you have complete control over what you do. That for me is a huge advantage for creating my own game/game engine. I understand however, that it will take me long to complete which i have no problem since i am very patient.

I may create my own game engine while at the same time programming on Unity.

I was planning on using Unity since i could focus mostly just creating the game. However, I want to be able to be a strong programmer who understands how 3D game's work, i also like the idea of creating my own engine because you have complete control over what you do. That for me is a huge advantage for creating my own game/game engine. I understand however, that it will take me long to complete which i have no problem since i am very patient.

I may create my own game engine while at the same time programming on Unity.

That's certainly a good way to approach the situation. I think you'll find using Unity very educational. You'll probably find a lot of things you wish Unity did differently, and then you can do them differently in your own engine.

Just try to keep your goals in mind. If you find the benefits of creating your own engine disappear after you've learned more, don't be afraid to drop the engine work to focus more heavily on actually making and shipping a game.

I was planning on using Unity since i could focus mostly just creating the game. However, I want to be able to be a strong programmer who understands how 3D game's work, i also like the idea of creating my own engine because you have complete control over what you do. That for me is a huge advantage for creating my own game/game engine. I understand however, that it will take me long to complete which i have no problem since i am very patient.

I may create my own game engine while at the same time programming on Unity.

That's certainly a good way to approach the situation. I think you'll find using Unity very educational. You'll probably find a lot of things you wish Unity did differently, and then you can do them differently in your own engine.

Just try to keep your goals in mind. If you find the benefits of creating your own engine disappear after you've learned more, don't be afraid to drop the engine work to focus more heavily on actually making and shipping a game.

Thank's a lot. I will keep creating my game engine, i stick to my words until i die. Currently i want to create a 3rd person game base and add more gameplay features later on.

Also you are right about using Unity. I am also going to program the game in Unity so i know how a game engine works.

Thakn you all for your replies they helped me a lot :)

You should be spending as much time as possible actually writing opengl code, if you are actually writing code that does things it really cements the concepts in your brain and it'll be hard for you to forget it, especially with your rigorous learning schedule. You didn't specifically say that you aren't writing a lot of code in addition to reading through your resources so if I'm mistaken I apologize

You should be spending as much time as possible actually writing opengl code, if you are actually writing code that does things it really cements the concepts in your brain and it'll be hard for you to forget it, especially with your rigorous learning schedule. You didn't specifically say that you aren't writing a lot of code in addition to reading through your resources so if I'm mistaken I apologize

No problem, i was coding as much OpenGL as i could practically since i am mostly practical and learn things by doing, but most of the tutorials i just kind of did not understand properly, they did not explain everything in detail for me to understand so it was difficult for me to code with OpenGL and i felt i needed to learn 3D Computer Graphics in order to understand what is going on but that was not the case. For me OpenGL feels like Math's, you have to wait at a right time until you understand it.

I memorize something perfectly if I understand it, if i dont then i cannot progress and will be stuck on a road block. This is why i was able to code and learn quicker with Direct3D, it had a better documentation. Repetition does not help me learn, it rather De-Motivates me and makes anything i do boring so i immediatelly threw out repetition and have had a higher success rate without it.

This topic is closed to new replies.

Advertisement