Sign in to follow this  
BKrenz

Learning Graphics Development

Recommended Posts

Hello all!

 

I'm a somewhat capable programmer in general, currently taking some time off school for personal reasons. In the meantime, I've been reading books on more generalized software development concepts, and working on a few tiny projects for various things. While I'd have loved to get an internship in the industry, my current situation prevents that.

 

I've been interested in games for a while, and am interested in different aspects of developing them. Most recently, I've been wanting to dive into the world of graphics, and have done a minimal amount of research so far. I have one major concern before I start learning, and it's related to the new Vulkan and DX12 APIs. I've noted from various sources that the way of doing things is going to be changing, and that, at least for Vulkan, it should be public by the end of 2015.

 

My concern is that I would start diving into one of the APIs that are out now, DX11 or OGL4+, and would be harmed by learning about how things are currently accomplished. 

 

Doing the math isn't a concern on my end, I'm fairly familiar with a lot of calculus, algebra, and geometry. From my understanding, matrices, and to a lesser extent, quaternions, are a major staple of 3D graphics.

 

My question is this: In order to ensure that I'm learning the more "correct" way of doing things, where should I be starting? Is just getting in and doing something in the current APIs the best way to go? I'm not sure where to start. Conceptually, I would think that many things will carry over well (VBOs, etc). However, implementations, and architectures, seem like they'll be changing drastically. 

 

Please do note that I'm wanting to learn how to develop directly in the APIs, and not wanting to learn about different engine's ways of handling it or anything like that. 

Share this post


Link to post
Share on other sites

Yeah good advice above.

 

We still have people posting on this forum asking questions about Direct3D 9, or OpenGL 2! So starting with D3D11 or OpenGL 3/4 is still relatively modern :)

 

They key task is that you're learning how modern GPUs work. D3D11 or GL3/4 will be fine for this.

Once you're comfortable with the theory of how GPUs work, then learning ANY GPU API is easy.

Share this post


Link to post
Share on other sites

What they said... I just wanted to add that there are some fantastic resources available that'll walk you through some common rendering techniques :

 

For OpenGL & DirectX :

 

http://www.rastertek.com/tutindex.html

 

Shaders :

 

https://www.shadertoy.com/

Edited by Orangeatang

Share this post


Link to post
Share on other sites

I would definitely recommend jumping into the current API's and more specifically OpenGL due to it's cross-platform nature. Creating games/projects with these current APIs should hopefully give you a deeper understanding of the underlying concepts such as graphics programming as well as software design patterns.

 

There are plenty of OpenGL bindings for pretty much every language thinkable right now so just choose the language you are most comfortable in and get coding! :D

Share this post


Link to post
Share on other sites

What they said... I just wanted to add that there are some fantastic resources available that'll walk you through some common rendering techniques :

 

For OpenGL & DirectX :

 

http://www.rastertek.com/tutindex.html

 

Shaders :

 

https://www.shadertoy.com/

Never seen that shadertoy site till now. Looks awesome. My computer gets really choppy when I'm on that site though, is it just me? Can't test on another computer atm.

Share this post


Link to post
Share on other sites

Shadertoy is really choppy here as well - crashes my Firefox/GraphicsCard on a regular basis.

I have a real crap GC, though..

Still, what runs in a browser these days didn't even run stand-alone a couple of years ago.

Edited by jacmoe

Share this post


Link to post
Share on other sites


I would definitely recommend jumping into the current API's and more specifically OpenGL due to it's cross-platform nature.

 

I generally don't like it when people give this advice. Yes, OpenGL is cross-platform, but anyone who has any experience with cross-platform (or even cross-vendor!) OpenGL development knows how much of a pain it is to get consistent results across platforms and hardware. I'd choose DirectX over OpenGL any time just to avoid the extension and driver compatibility hell.

Share this post


Link to post
Share on other sites

 


I would definitely recommend jumping into the current API's and more specifically OpenGL due to it's cross-platform nature.

 

I generally don't like it when people give this advice. Yes, OpenGL is cross-platform, but anyone who has any experience with cross-platform (or even cross-vendor!) OpenGL development knows how much of a pain it is to get consistent results across platforms and hardware. I'd choose DirectX over OpenGL any time just to avoid the extension and driver compatibility hell.

 

 

I actually ended up going with DIrectX, via SharpDX. I'm not concerned with actual development at this point in time, and this is more of a side project type of thing than an actual career decision. 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this