Thank you, your videos are also nice! :) Yeah, quite a few things changed in the newer versions. I'll make some follow-up videos with other modern features.
@@VictorGordan Awesome man, I followed a tutorial once that wrote color values into a texture buffer with a compute shader but it'd be cool to see something that used it to process data more, or I suppose then you just use Cuda when the data has nothing to do with color.
DSA really helps in terms of performance. I’m currently having two separate but similar OpenGL projects, one to follow your original OpenGL tutorial (currently pausing at the Lighting one), one to fiddle around with (also does the same job as the tutorial one). I ported the DSA code to the latter project, and it barely produce any lag when moving around the pyramid, compare to the former OpenGL project, which does have some minor but noticeable lag. I’m not mocking your tutorial of any kind, I’m actually really appreciating that you made the tutorial playlist.
Very good video ! would love to see other AZDO principles in OpenGL like the persistent mapping and all ! keep it up man you deserve a lot more view and subs !
hello victor! To train opengl skill, I was watch in your opengl tutorial class after yesterday. My question is that, it's okay to use DSA for binding/unbinding as above to practice the openGL tutorials? p.s. I'm korean, so I translated it once and understood it, but I haven't met anyone who explains opengl better than you. Really thank you :)
I would say it improves it in the worse case scenario like you said. It's more about convenience and lowering the chance of a binding related bug rather than performance improving ;)
btw, I am following your openGL course and I am at ep-13 (loading models). my models are not showing up. I matched my code with the source code and even pasted your code to check my setup, but nothing seems to be working. however, when I draw a light object, the model renders but without the textures.
Sadly there are many many things that can go wrong with model loading, so I can't really help you with that 😅 It might be a problem with the models tho, rather than the code itself
thanks but, the thing is that I have tried everything 😔. and the only possible way now is to use an external library for importing models. is it okay if I do that. but I will go through your tutorials and create this engine from scratch once again before that.
@Victor Gordan, Sheesh I'm so used to doing it the non DSA way that doing it the new way is almost intimidating. But if it's considerably more efficient I suppose there's no choice no? 🤔🤔
I mean you can just do it the old way if you like it that much haha. The old way also allows you to have support for older devices that don't support OpenGL 4.5 ;)
Really interesting features presented here Now that I no longer need to bind created resources to the active context does that also mean I can use multithreading as in DirectX? btw I really like this it's short and concise :)
Yes, I believe you can use multithreading to a certain extent. Not with VAOs, or Framebuffers since those still have to be binded, but with VBOs it should work in theory (I never tried it myself). Try it out and see if it works out ;)
@@VictorGordan from my experience (I work with OpenGL ES, Vulkan, Metal) OpenGL is very bad in that :(. Even if you create a shared context and try upload some data - it will block rendering thread (somewhere in drivers). As a result you have to create temporary buffers, send them to render thread and upload data with rendering. And ofc you have to limit amount of data to upload or you will have frame drops. Metal is shining in that (you can create objects and upload data at any time/thread and you will not see any blocks in rendering). Vulkan is still unusable - too many bugs in drivers on many popular mobile devices :(
Hmmm, I wonder what is the key difference between the glGen* and glCreate* functions? I Always thought they did pretty much the same thing before this video
As far as I know, glGen only creates an object ID, and the object itself gets initialized when you bind it, while glCreate also initializes the object, and for most objects it also removes the need to bind it as mentioned in the video ;)
GOSH, I'm still struggling with grasping wtf is going on with the NON-DSA version, feel like I'm 10 years behind the current tech level. How do people learn this? In universities they don't teach you this as they don't adapt quickly enough... so how? How do developers learn all of this
Imo DSA is easier than non-DSA (conceptually speaking). As to how I learn the newer stuff, I usually hear about it from other devs, and then I either look for a tutorial (which is rly hard to find or non-existent usually), or I look at the official documentation (which is a pain to read, but useful). I learnt 0 computer graphics from my university.
Didn't had time yet to test out the performance difference for my engine, but I can at very least clearly see the convenience of it haha. Goodbye dumb bindings!
Also a small tip, when you do have to bind stuff like VAOs or Framebuffers, make a variable on the CPU side "bindedVAO" that keeps track of the binded VAO, and before binding a VAO make sure it is different from that variable. An if statement on the CPU should be much faster than sending an instruction to the GPU ;)
cries in target spec: OpenGL 3.1 OK maybe 4.0. (after fighting with a few thousand users having unique OpenGL driver issues) oh sod it, i'm porting to DX11.
Yeah, if you don't have any previous experience with state machines, then it's really weird, and it feels sort of pointless, just work for the sake of work
As long as Vulkan will also add a good way of skipping the boilerplate and having higher level control like OpenGL, as opposed to the base low level control Vulkan has, I am ok with it :)
I know!!! haha I thought the same thing, but I really couldn't come up with a better one, cause let's be honest, it's a pretty "boring" concept and video. Plus that if you read it like that it's sort of intriguing imo, might be part of the reason people clicked on the video ;)
Vulkan requires a lot of boilerplate code, DX is Windows only, Metal in Apple only. If you are new to computer graphics, I think OpenGL is one of the best ways to start learning. Especially since there are way more materials online to learn OpenGL compared to the other APIs you mentioned. So that's why I'd say people still use it ;)