Jump to content

  • Log In with Google      Sign In   
  • Create Account

Will Learning Direct3D help Understanding Open GL Better?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
13 replies to this topic

#1 Zero_Breaker   Members   -  Reputation: 367

Like
0Likes
Like

Posted 10 January 2014 - 03:57 PM

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?



Sponsor:

#2 Khatharr   Crossbones+   -  Reputation: 3038

Like
3Likes
Like

Posted 10 January 2014 - 07:25 PM

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.

#3 richardurich   Members   -  Reputation: 1187

Like
2Likes
Like

Posted 10 January 2014 - 07:29 PM

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.



#4 L. Spiro   Crossbones+   -  Reputation: 14236

Like
7Likes
Like

Posted 10 January 2014 - 07:56 PM

(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


Edited by L. Spiro, 11 January 2014 - 11:40 AM.

It is amazing how often people try to be unique, and yet they are always trying to make others be like them. - L. Spiro 2011
I spent most of my life learning the courage it takes to go out and get what I want. Now that I have it, I am not sure exactly what it is that I want. - L. Spiro 2013
I went to my local Subway once to find some guy yelling at the staff. When someone finally came to take my order and asked, “May I help you?”, I replied, “Yeah, I’ll have one asshole to go.”
L. Spiro Engine: http://lspiroengine.com
L. Spiro Engine Forums: http://lspiroengine.com/forums

#5 Zero_Breaker   Members   -  Reputation: 367

Like
0Likes
Like

Posted 11 January 2014 - 04:16 AM

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 :).



#6 Zero_Breaker   Members   -  Reputation: 367

Like
1Likes
Like

Posted 11 January 2014 - 04:30 AM

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.



#7 richardurich   Members   -  Reputation: 1187

Like
1Likes
Like

Posted 11 January 2014 - 11:19 AM

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.



#8 Zero_Breaker   Members   -  Reputation: 367

Like
0Likes
Like

Posted 11 January 2014 - 12:49 PM

 

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 :)



#9 Moe091   Members   -  Reputation: 576

Like
0Likes
Like

Posted 13 January 2014 - 09:17 AM

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



#10 Zero_Breaker   Members   -  Reputation: 367

Like
0Likes
Like

Posted 13 January 2014 - 07:15 PM

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.


Edited by Zero_Breaker, 13 January 2014 - 07:17 PM.


#11 ShadowKGames   Members   -  Reputation: 339

Like
0Likes
Like

Posted 13 January 2014 - 10:28 PM

Might be me, but I've not found OpenGL that bad to be honest. A lot of the deprecated commands require an extra i or another character for some reason which is annoying. But apart from that, it's been rather straight forward and when building a small engine I've not really used that much code to get a 3D GL renderer running.. It's mainly in the shaders and with LWJGL you can import multiple versions of the GL library, although I have had specific versions complain about overlapping.

 

Had a few culling issues, I some how managed to mess it up so when the cube spins it doesn't remove the cull which I sorted out and trying to sort out the flipped buffer in LWJGL was a bit of a pain even with direction. Apart from that all pretty much straight forward.!

 

I'd honestly try LWJGL and work though some tutorials on youtube, you may find it's not all that scary.


Edited by ShadowKGames, 13 January 2014 - 10:29 PM.


#12 Zero_Breaker   Members   -  Reputation: 367

Like
0Likes
Like

Posted 14 January 2014 - 06:30 AM

Might be me, but I've not found OpenGL that bad to be honest. A lot of the deprecated commands require an extra i or another character for some reason which is annoying. But apart from that, it's been rather straight forward and when building a small engine I've not really used that much code to get a 3D GL renderer running.. It's mainly in the shaders and with LWJGL you can import multiple versions of the GL library, although I have had specific versions complain about overlapping.

 

Had a few culling issues, I some how managed to mess it up so when the cube spins it doesn't remove the cull which I sorted out and trying to sort out the flipped buffer in LWJGL was a bit of a pain even with direction. Apart from that all pretty much straight forward.!

 

I'd honestly try LWJGL and work though some tutorials on youtube, you may find it's not all that scary.

Thanks, for the suggestion but i am a C++/C#/C Programmer and i hate Java. But thank's anyway.



#13 ShadowKGames   Members   -  Reputation: 339

Like
0Likes
Like

Posted 14 January 2014 - 02:01 PM

 

Might be me, but I've not found OpenGL that bad to be honest. A lot of the deprecated commands require an extra i or another character for some reason which is annoying. But apart from that, it's been rather straight forward and when building a small engine I've not really used that much code to get a 3D GL renderer running.. It's mainly in the shaders and with LWJGL you can import multiple versions of the GL library, although I have had specific versions complain about overlapping.

 

Had a few culling issues, I some how managed to mess it up so when the cube spins it doesn't remove the cull which I sorted out and trying to sort out the flipped buffer in LWJGL was a bit of a pain even with direction. Apart from that all pretty much straight forward.!

 

I'd honestly try LWJGL and work though some tutorials on youtube, you may find it's not all that scary.

Thanks, for the suggestion but i am a C++/C#/C Programmer and i hate Java. But thank's anyway.

 

 

Well I work with C++ / C# / C / Lua and Java and it has little to do with using using OpenGL IMO. I have the framework ported to C++ and C# as well, it's more about getting the concept's down really, the syntax doesn't vary wildly enough to cause major issues if you know how to do it in one language.

 

Best of luck.


Edited by ShadowKGames, 14 January 2014 - 02:01 PM.


#14 Zero_Breaker   Members   -  Reputation: 367

Like
0Likes
Like

Posted 14 January 2014 - 02:21 PM

 

 

Might be me, but I've not found OpenGL that bad to be honest. A lot of the deprecated commands require an extra i or another character for some reason which is annoying. But apart from that, it's been rather straight forward and when building a small engine I've not really used that much code to get a 3D GL renderer running.. It's mainly in the shaders and with LWJGL you can import multiple versions of the GL library, although I have had specific versions complain about overlapping.

 

Had a few culling issues, I some how managed to mess it up so when the cube spins it doesn't remove the cull which I sorted out and trying to sort out the flipped buffer in LWJGL was a bit of a pain even with direction. Apart from that all pretty much straight forward.!

 

I'd honestly try LWJGL and work though some tutorials on youtube, you may find it's not all that scary.

Thanks, for the suggestion but i am a C++/C#/C Programmer and i hate Java. But thank's anyway.

 

 

Well I work with C++ / C# / C / Lua and Java and it has little to do with using using OpenGL IMO. I have the framework ported to C++ and C# as well, it's more about getting the concept's down really, the syntax doesn't vary wildly enough to cause major issues if you know how to do it in one language.

 

Best of luck.

 

For me syntax matters a lot since i am also going to be creating an Abstraction layer, C++ is my prefered language that i am strong and best at with C# being second. But thanks a lot for the help. Could you maybe PM me the C++ port. It sounds interesting.






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS