How much OpenGL should I learn before transitioning to UE5 for game development?

I’m aiming to learn game development with UE5 using C++.
I’m specifically interested in gameplay programming.
Currently I’m learning OpenGL so I can build some small games to improve my C++ skills before starting to learn UE5.
I was wondering how far I should go with OpenGL before transitioning to UE5.
Is it valuable to know a graphics API and the rendering pipeline in depth when using a game engine like UE5?

I’d love to hear how much low level graphics knowledge experienced UE5 developers consider useful for someone focusing on gameplay programming.
Thanks in advance!

Well, you don’t really need to know OpenGL. Besides, the engine’s rendering pipeline is locked; the only way to modify it is to compile your own Unreal Engine :eyes:

None really. It can’t hurt though. If anything, drawing some stuff in OpenGL from scratch will give you an appreciation of how much work game engines do for you.

One thing that would help is learning some HLSL so you can make custom material nodes:

Custom Material Expressions in Unreal Engine | Unreal Engine 5.7 Documentation | Epic Developer Community

if you want to work on manually generating shaders, or helping to work on the Engines Shader generation, then knowing 1 of the 3 major shader targets (OpenGL, DirectX, and Vulkan) is good, but otherwise for the vast majority of “graphics programming” is done through the material system, and then those are transposed into shaders.

for the purpose of gameplay programming specifically, the graphics side is not too important, you should probably know:

  • how to get a distance Squared (knowing that comparing 2 squared distances is nearly identical to comparing 2 distances)
  • the dot product, what it does, and why it does it, and the applications
  • the cross product, what it does, and why it does it, and the applications
  • Floats are only an exact value on a Tuesday at 3:28PM in Paris.
  • what different trig operations on vectors, and same for inverse trig operations
  • the meaning, and manipulation of Euler angles, and their limitations (if you are willing to go into C++ you can get Quaternions, don’t worry on understanding everything about them, or interpreting raw Quats, just that they are the underlying structure for Rotation, and are vastly more accurate)
  • Interpolations their types and what they look like.
  • the Stack and the Heap and why it matters (in Unreal all structs and array are Stack allocated, and C++ “new” means “you are responsible for the leaks WHEN they happen”)
  • no pointer can be trusted before reading or writing.
  • Unreal can easily have the effectiveness of a sledgehammer with the weight of a steamroller.
  • if you are going to be working in C++ realize that some things are still better suited, and easier in Blueprints and you will most likely end up working there eventually (timers, animations, referencing other blueprints, specific instance things). and for the majority of your C++ should probably have some or many ways for blueprints to interact with.
  • if you are going to be working in Blueprints, some things are C++ exclusive, but can be faked with enough ingenuity, or by exposing it through C++.
  • Tick() is not evil, most people just abuse it; either through object count, complexity, or just not putting a limit on it.
  • that Materials (the resulting shader more specifically) lives on the GPU unless you specifically share the data back.
  • that no problem is insurmountable, if you break it down into smaller chunks, almost anything is possible, at the end of the day a programmer or scripter is a problem solver
  • any great documentation plan is all well and good until it is time to implement it, and then it might be better as toilet paper.

will knowing openGL stuff help, writing performant openGL is a similar process to writing performant C++ and blueprint scripts. The first things most game engines, and 3D modeling software will try to do is abstract away quaternions and matrices, so that anyone trying to get a cube to render or spin doesn’t take Calculus3, Linear Algebra, and 2 years of programming. then they will abstract your rendering APIs either for agnostic reasons, or limiting complexity.

if you have no intent to do materials, or work in the engines rendering pipeline the specifics of OpenGL will not be that helpful