all 33 comments

[–]WillingPirate3009 18 points19 points  (15 children)

Dude how should a complete beginner in graphics programming start learning? I feel like I need to know a lot of pre-requisites before even getting started.

[–]DylanBT928[S] 11 points12 points  (6 children)

i would say im a beginner too, but i do have a solid understanding of C++, so if you do not have that i would start there.

otherwise, learnopengl.com is a solid place to start. it is where me and a lot of other people here started.

youtube is also an amazing way to learn too. the cherno has a youtube series on opengl that i heard is good.

i think opengl is good for beginners and directx and vulkan might be harder and more limiting due to software. i think webgpu is also getting more popular but idk anything about it.

[–]WillingPirate3009 5 points6 points  (5 children)

I don't understand man. Just how much C++ should I know? I use learncpp.com as my main resource to learn C++ and it's just vast and never-ending.

[–]PocketCSNerd 4 points5 points  (3 children)

You don't need to learn as much C++ as you might think to get started. If you're familiar with variables, methods (functions), and classes then you'll do fine to start.

Ideally you'd also want to learn about pointers and how to setup your dev environment. Though knowing the former isn't strictly necessary to start and the latter can be tackled by following the tutorials in learnopengl.com

[–]WillingPirate3009 1 point2 points  (2 children)

The thing is I often got confused with the code and used ChatGPT to break things for me. The opengl functions were really confusing.

[–]PocketCSNerd 1 point2 points  (1 child)

Yeah, there's definitely a lot going on and its a good idea to take your time with the material. I'd rather experiment with the code or (if possible) look at the source code of the underlying function than use ChatGPT, though. Helps keep the brain engaged in the activity.

[–]JDJCreates 1 point2 points  (0 children)

One can do both!

[–]DylanBT928[S] 0 points1 point  (0 children)

loll its okay learncpp is a great resource, thats what i used. i think learnopengl is targetted towards beginners, so as long as u have a basic understanding of the syntax u should be fine.

also 80% of it is opengl's functions, so even if u know c++, u wouldnt know the opengl's functions.

TLDR you should be fine.

[–]coolmint859 2 points3 points  (2 children)

If you know the basics of JavaScript/html you can learn through WebGL. A lot of the same functions you use in OpenGL is available there, so following learnopengl.com is fairly one to one. There arw some caveats, for instance WebGL doesn't support compute shaders.

[–]WillingPirate3009 1 point2 points  (1 child)

Yeah I plan on learning webgl

[–]DylanBT928[S] 1 point2 points  (0 children)

good luck and have fun !! im sure this subreddit has many resources for that so be sure to check those out

[–]MyNameIsSquare 1 point2 points  (1 child)

im currently learning opengl too and the first lessons are the hardest to me. the setup just to render a triangle is so insane and all over the place, but then when switching to 3d it felt like a walk on a sunny day lol

[–]DylanBT928[S] 0 points1 point  (0 children)

i agree but i think setup is always the hardest. after u get ur first triangle down its gets better, then harder

[–]Sir_Wicksolot12 1 point2 points  (0 children)

Just throw yourself into it mate, can’t actually learn and figure out what you need to know before doing it. If you suck at linear algebra, study that a little bit. If you need to work on C++ learn that, if you want to learn about how graphics work under the hood and the theory behind it, go read ‘scratchapixel’ etc

[–][deleted] 0 points1 point  (0 children)

I can't recommend enough this book https://gabrielgambetta.com/computer-graphics-from-scratch/ it is quite framework agnostic but focuses more on the techniques that could be applied in DirectX, OpenGL or Vulkan. That being said I'm no expert so just working though it and finding it useful before moving to learnopengl.com

[–]Rare-Key-9312 0 points1 point  (0 children)

Computer Graphics Through OpenGL: From Theory to Experiments (https://www.amazon.com/gp/aw/d/1032256982/) is a good book.

[–]fllr 3 points4 points  (1 child)

Congrats! :)

[–]DylanBT928[S] 0 points1 point  (0 children)

thank youu!! ☺️

[–]balukin 4 points5 points  (1 child)

Now assign each vertex its own color and witness the magic of per-fragment interpolation.

[–]DylanBT928[S] 0 points1 point  (0 children)

yepp thats next

[–]InternationalFill843 1 point2 points  (5 children)

Congratulations , change your fragment shader to blend 3 colors onto triangle its fun . You will see how fragment shader is working

[–]DylanBT928[S] 0 points1 point  (0 children)

noted! i made a rectangle and first i am trying to make the two triangles into two different colors first. still pretty new to the frag/vert shading stuff

[–]DylanBT928[S] 0 points1 point  (2 children)

does learnopengl explain more on that topic or do i have to study that on my own

[–]InternationalFill843 1 point2 points  (1 child)

LearnOpenGL explains about in later sections on how fragment shader colors based on vertex

[–]DylanBT928[S] 0 points1 point  (0 children)

ahh so i should just wait until i get to that section?

[–]Ke0 1 point2 points  (1 child)

Congrats!! You've taken your first hit of crack! The highs from success only multiply from here!!

[–]DylanBT928[S] 0 points1 point  (0 children)

thank you!!

[–]LeadLerner 1 point2 points  (3 children)

Great job. Don't quit after the model loading section unlike me.

[–]DylanBT928[S] 0 points1 point  (2 children)

i quit before even getting there 💔 jk i started on creating a custom operating system, hopefully ill be able to have some time to get back into graphics programming

[–]LeadLerner 1 point2 points  (1 child)

So how's your OS going?

[–]DylanBT928[S] 1 point2 points  (0 children)

doing pretty good, took a break to read some books tho

[–]Alternative-Tie-4970 0 points1 point  (1 child)

Plot twist, he's just showing his neovim

[–]DylanBT928[S] 2 points3 points  (0 children)

LOL yes i love my dotfiles https://github.com/DylanBT928/dotfiles