Note to people that maybe can't log with glGetString() Depending on your version of spdlog you won't be able to log it because glGetString() resturns the type 'const unsigned char*' and it can't format it. To fix it simply cast the return value to (const char*) and your problem will to solved. EXSAMPLE: (const char*)glGetString(GL_VENDOR); Hope it helped someone since this is version dependent.
It's actually really cool doing this series that's considerably old now. Not only are the comments extremely helpful but I get to run into all sorts of new-to-me errors in C++ as I continue to learn that language by brute force. Thank you for providing this answer!
@@ast_rsk I completely agree with this -- doing old series, peeking into comments and facing incompatibilities. It really boosts the learning progress, and it's very satisfying to look later at how Cherno solves problems you just solved by yourself or made sure that you wouldn't encounter them at all. Very motivating to move forward.
Wanted to say it last video, but eh, here it is, Hope your wedding was wonderful! Thanks for all videos, and taking the viewers into consideration for this series!
If you use GLAD and specify Core profile, it removes the legacy/immediate mode definitions. For those at this point who opted for GLEW instead of GLAD, you would have been able to render the triangle at the end of the previous episode through glBegin and glEnd!
I have a really old laptop (Fujitsu) with Intel i5, 1st generation (Integrated graphics). My OpenGL version is 2.1, but still I managed to render using the Mesa software implementation of OpenGL drivers.
I have no experience with OpenGL and it surprises me how short is the code required to draw a triangle, compared to DirectX 10 and higher. Well, even DX9 with the fixed function pipeline required much more coding to get a triangle.
Not for all of us; I wish I knew his channel 2 years later so I can watch his series in raw instead of waiting every week for some episode that finishes almost nothing of that big project.
@@kirafortherescue7756 I think I unintentionally may have sounded rude here sorry. (English is not my 1st) Well, at least my wish came true.. kinda. I'm re-watching 2 years later! Like... I just found this random comment of me (in my alt account) 2 years ago wishing for literally what's happening right now which is 2 years later... Wow. I've a long way to catch up though. Sad thing is.. now I don't have the free time I had 2 years ago. It's ironic.
Great video Cherno! I reckon either doing raw GL shaders using constant strings for the shader code (for now) or making a Shader class with a temporary fstream implementation if you want to go straight to loading shaders from files and then work on abstraction from there like you do in your GL series. I'd say the former is easiest for your working backwards approach and also cause we wouldn't consider using different shaders till much later and that making a virtual file system is a whole separate part of the engine. Either way keep up the great work!
He is focusing on this series apparently, if you have looked hard enough into his channel, you will realize just how many videos he has made focusing on Java.
Encountered this on the std atomic datastructure in the spdlog call stack, something to do with threads, made a temporary patch with simple logging, the problem is already solved in the current commit of the hazel repository.
Lol, I was thinking the same thing, but I think I know the answer. If you have VS 2019 installed, on the IDE's top left corner, there is a logo. For the both VS2 2017 and 2019, the logos are different, so I think the Cherno is still using VS 2017...
Nice tuts and effort. Interesting series.. But all i see on YT is just game engines that draw triangles or circles and there the stuff ends. Almost Nobody ever finishes or creates any real game.. Very few YT guys i know who actually made (even simplest) game with their engine. 99% of those who make these videos loose interest or just disappear.. Its a huge topic and nobody will do that forever for free. People just loose any motivation and quit.. hopefully you will continue. There are good channels like yours but they are just not active anymore. And owners are disappeared. No comments, updates, anything.. Sad
I can see the triangle on blinking for the first time on console, then disappear immediately. I am of course calling the `glDrawElements` inside `Application::Run()` so it should run every frame. But it only appears once and then disappear (so empty console, beside imgui). Does anyone know what could be wrong?
Hey, probably you already figured it out, or Cherno explained this in another video, but this might help anyone that comes across this issue. So, basically as Cherno said, we are using the default shader, that is ID=0, and that’s great, but If you are using the current version of ImGui, it uses its own shaders to render the UI, I confirmed this by querying the shader ID before and after the ImGui layout renders, so you have two options, either call glUseProgram(0) which is the default one, or create your own shader and bind it before drawing your triangle.
Using the same methods in c# and OpenTK library is possible... RIGHT??? edit : Thank you cherno I really didn't know anything about OpenGL and Graphics at all before watching your opengl series ... You're so good at explaining things and simplifying complex things
@@semicolon4671 I spent two years learning and working in C#/OpenTK but in the end it was an uphill battle because all the help across the internet is in c++. It's not that the GL calls are different, they're not, it's that everything else is and you need to understand that to progress. I moved to c++ and OpenGL a few weeks ago and fuuuuuck it is incredible, it's really not that difficult if you know C# and the framerate boost holy shit. OpenTK and C# = honestly no good. Step up ma fucka! I'm livinamuk on the Cherno discord, hit us up if you need help.
ChatGPT3.5 Generated content: - The transcript is part of a video game engine series. - The previous video explained how to read a graphics context. - The purpose of the current video is to lay the foundation for future episodes. - The video aims to render a triangle using raw OpenGL calls. - The speaker invites viewers to become patrons to access more advanced development ideas.
I starter following this series since the first episode and to me it is really really great. The only problem is: it has becoming too slow. This is the 28th episode and all we can see is a triangle. I would suggest you to develop the shader class next video and after that start focusing on the Renderer. Thank you for all the effort Cherno, you're great!
I know making a game engine is not a easy and quick thing to do. But i also think make an event system and an initial infrastructure and then draw a triangle is not a thing that should take 28 video and more than 6 months to teach.
@@braindeveloperdimensional5579 and I understand this and the entire goodnjob thst he is making. My only consideration is the fact that all this things could have been shown some months ago.
This is the main issue I have with these series. There is no or minimal amount of planning. "I thought we would", "I hoped we would" etc... at this point it's simpler to just find something on udemy and pay for the course where you have a full course by someone who has actually planned the course. Sure sure this is free I get it!
There is a hell lot of planning when he talks, and "Designing our Game Engine" focuses on that. Also, in the discussions, people decide what should happen next.
@@microgut9104 Exactly, there is no actual planning. It's whatever people want next, which I can appreciate, but I was hoping for something that was planned and then followed. Now it seems we are going to have to jump to another (incomplete) video series, but again... this is all free... so I can't expect much in terms of planning
@@antoniocs8873 Yeah but guess what, if it was all planned, people might have other problems, such as "Oh why that? Why not this". I think this is why Yan wants us to cooperate as well.
Note to people that maybe can't log with glGetString()
Depending on your version of spdlog you won't be able to log it because glGetString() resturns the type 'const unsigned char*' and it can't format it. To fix it simply cast the return value to (const char*) and your problem will to solved.
EXSAMPLE:
(const char*)glGetString(GL_VENDOR);
Hope it helped someone since this is version dependent.
It's actually really cool doing this series that's considerably old now. Not only are the comments extremely helpful but I get to run into all sorts of new-to-me errors in C++ as I continue to learn that language by brute force. Thank you for providing this answer!
@@ast_rsk I completely agree with this -- doing old series, peeking into comments and facing incompatibilities.
It really boosts the learning progress, and it's very satisfying to look later at how Cherno solves problems you just solved by yourself or made sure that you wouldn't encounter them at all. Very motivating to move forward.
Thanks!
thanks! much appreciated!
Saved me lots of head scratching!
- Congratulation sir!
- Is it a boy or a girl?
- It's a triangle!
@Adam Vagapov Yes
@Adam Vagapov Maybe
@@gwentarinokripperinolkjdsf683 perhaps not
Why is this so funny?
@@marijnkneppers2340 he just got married
Yan is the coolest. Thank you for teaching us so much.
Wanted to say it last video, but eh, here it is, Hope your wedding was wonderful! Thanks for all videos, and taking the viewers into consideration for this series!
1:12, you're so happy about that, makes me smile : )
If you use GLAD and specify Core profile, it removes the legacy/immediate mode definitions. For those at this point who opted for GLEW instead of GLAD, you would have been able to render the triangle at the end of the previous episode through glBegin and glEnd!
Awesome, glad you're sticking to this. Game engines are no joke.
cherno i cant imagine you teaching data structures tbh and how awesome that will be
Most mac os x gpus need shaders provided to render in OpenGL
I have a really old laptop (Fujitsu) with Intel i5, 1st generation (Integrated graphics). My OpenGL version is 2.1, but still I managed to render using the Mesa software implementation of OpenGL drivers.
thanks
On Mac you need a shader for this to work. Can be very basic, but you still need a shader :)
I got the intel 520 renderer, but from everything else the exact same, that is very good then I can expect that whatever works for you works for me...
Tested on amd fury x and vega 64 still gonna test it on rx 580 and 6900xt thanks for this.
OpenGL Version: 4.0.0 - Build 10.18.10.4425.
GPU: Intel HD 4000
A default shader isnt provided for this version
OOF
I have no experience with OpenGL and it surprises me how short is the code required to draw a triangle, compared to DirectX 10 and higher. Well, even DX9 with the fixed function pipeline required much more coding to get a triangle.
vulkan: hmmmmmmm
Vulkan be like: Now lemme tell you something
wow I really love this series, I wish to know your channel earlier.
Not for all of us; I wish I knew his channel 2 years later so I can watch his series in raw instead of waiting every week for some episode that finishes almost nothing of that big project.
@@kirafortherescue7756 Right? Lmao it's so lazy. Yet he still insists on that per week schedule.
@@kirafortherescue7756 I think I unintentionally may have sounded rude here sorry. (English is not my 1st)
Well, at least my wish came true.. kinda. I'm re-watching 2 years later!
Like... I just found this random comment of me (in my alt account) 2 years ago wishing for literally what's happening right now which is 2 years later... Wow.
I've a long way to catch up though. Sad thing is.. now I don't have the free time I had 2 years ago. It's ironic.
@@nullbeyondo update?
@@kirafortherescue7756 Now I am here 4 years later with 80+ more episodes to go! :D Binging go brrrrr.
Nice to see something visual after 8 months
Next time, 2 triangles!
@@prezadent1 yay!! The question now is, will we get to see some actual graphics before baby Cherno is born 🤔
@@mohamedelidrissi2839 Good question.
@@kirafortherescue7756 Indeed
It's stupid that this is the progress made in 8 months. I'll see you in 2 years when he finally renders a 3d model.
We have come a long way.
When you get around to it, can you go into detail about pbr and deferred rendering? there's no good video tutorials out there.
Amd has the default shader too ^^
Great! Keep going!
Awesome
Great video Cherno!
I reckon either doing raw GL shaders using constant strings for the shader code (for now) or making a Shader class with a temporary fstream implementation if you want to go straight to loading shaders from files and then work on abstraction from there like you do in your GL series. I'd say the former is easiest for your working backwards approach and also cause we wouldn't consider using different shaders till much later and that making a virtual file system is a whole separate part of the engine.
Either way keep up the great work!
Love your videos!
Mr and Mrs Charno Yey
Yea,first triangle!
Is there somewhere i can see what all the graphics "vocab words" mean? This is kind of hard to understand sometimes
Just Search them on google, i would recommend searching for Graphics programming terminologies. and maybe using the guru3d website.
Just asking
I think Intel(R) UHD Graphics 620 is better than GeForce MX110/PCIe/SSE2 right?
I am leak of GPU knowledge
Wait...a triangle in modern OpenGL with a shader?! Under what circumstances is this possible?
I wanna support u.
OooOoo u have a patreon :D
Do a Vulkan series
you rock
Hi ! Awesome video serie ! What librairie do you use for networking like TCP/IP server ? I tried to install Boost.Asio but I did not succeed :/
I hate networking, but like anything, it has to be done at some point...
depends on your OS, but normally your OS should ship socket libraries such as WinSock2 or socket, shouldnt be any need to use boost.
can you make a tutorial for create an third person game in java without opengl pls?
He is focusing on this series apparently, if you have looked hard enough into his channel, you will realize just how many videos he has made focusing on Java.
What is the new VS theme?
its JetBrains ReSharper extension.
Fisrt, congratulations man.
I love all your videos.
but I have a question, When a Vulkan API tutorial??
Thx!!
Ahhhh Segmentation fault(core dumped) on Linux but don't know which line cause stack problem!!!! AHHH
Encountered this on the std atomic datastructure in the spdlog call stack, something to do with threads, made a temporary patch with simple logging, the problem is already solved in the current commit of the hazel repository.
Cherno, Are you using Visual Studio 2019 as yet?
Lol, I was thinking the same thing, but I think I know the answer. If you have VS 2019 installed, on the IDE's top left corner, there is a logo. For the both VS2 2017 and 2019, the logos are different, so I think the Cherno is still using VS 2017...
Our Wedding !!
200 episodes in and we have our first triangle. That's why you use an existing engine. 😁
Good series by the way, keep it up.
Yeah man
Nice tuts and effort. Interesting series..
But all i see on YT is just game engines that draw triangles or circles and there the stuff ends.
Almost Nobody ever finishes or creates any real game..
Very few YT guys i know who actually made (even simplest) game with their engine.
99% of those who make these videos loose interest or just disappear..
Its a huge topic and nobody will do that forever for free. People just loose any motivation and quit..
hopefully you will continue. There are good channels like yours but they are just not active anymore. And owners are disappeared. No comments, updates, anything.. Sad
Bro you are ri8.
Many of good tutorials owner are no more working on youtube.
May he gives us some time.
Even it ends you can just ask on discord there are definitely some people which will help you.
@Platin 21 bro for what purpose discord is use
I think this is where you have to rely on books, as programming becomes less trivial.
Game Engine Architecture is recommendable here.
There are some decent books on amazon that will help you create a game engine from scratch
I can see the triangle on blinking for the first time on console, then disappear immediately. I am of course calling the `glDrawElements` inside `Application::Run()` so it should run every frame. But it only appears once and then disappear (so empty console, beside imgui). Does anyone know what could be wrong?
Hey, probably you already figured it out, or Cherno explained this in another video, but this might help anyone that comes across this issue. So, basically as Cherno said, we are using the default shader, that is ID=0, and that’s great, but If you are using the current version of ImGui, it uses its own shaders to render the UI, I confirmed this by querying the shader ID before and after the ImGui layout renders, so you have two options, either call glUseProgram(0) which is the default one, or create your own shader and bind it before drawing your triangle.
Using the same methods in c# and OpenTK library is possible... RIGHT???
edit : Thank you cherno I really didn't know anything about OpenGL and Graphics at all before watching your opengl series ... You're so good at explaining things and simplifying complex things
It is, OpenTK is not cross platform though
@@suleythbut isn't OpenTK just an OpenGL Wrapper for C#??
@@semicolon4671 I spent two years learning and working in C#/OpenTK but in the end it was an uphill battle because all the help across the internet is in c++. It's not that the GL calls are different, they're not, it's that everything else is and you need to understand that to progress. I moved to c++ and OpenGL a few weeks ago and fuuuuuck it is incredible, it's really not that difficult if you know C# and the framerate boost holy shit. OpenTK and C# = honestly no good. Step up ma fucka! I'm livinamuk on the Cherno discord, hit us up if you need help.
@@chris_burrows OK, I will try and do My best moving from C# to C++ :-)
@@semicolon4671 Yeh man give it a shot! There's a c++ Cherno series that I found very helpful.
ChatGPT3.5 Generated content:
- The transcript is part of a video game engine series.
- The previous video explained how to read a graphics context.
- The purpose of the current video is to lay the foundation for future episodes.
- The video aims to render a triangle using raw OpenGL calls.
- The speaker invites viewers to become patrons to access more advanced development ideas.
Ayyyy yo Sir Cherno,do you think you can do a vid on MATLAB ?
Print openGL
You could do a Godot and just use OpenGL ES as your renderer for every platform.
Would be better to see direct X and Vulcan support. But that would be an enormous amount of work
I starter following this series since the first episode and to me it is really really great. The only problem is: it has becoming too slow. This is the 28th episode and all we can see is a triangle. I would suggest you to develop the shader class next video and after that start focusing on the Renderer. Thank you for all the effort Cherno, you're great!
If you think making a game engine is a quick and easy thing that you can do in a couple of days you shouldn't be writing a game engine
I know making a game engine is not a easy and quick thing to do. But i also think make an event system and an initial infrastructure and then draw a triangle is not a thing that should take 28 video and more than 6 months to teach.
@@braindeveloperdimensional5579 and I understand this and the entire goodnjob thst he is making. My only consideration is the fact that all this things could have been shown some months ago.
17
This is the main issue I have with these series. There is no or minimal amount of planning.
"I thought we would", "I hoped we would" etc... at this point it's simpler to just find something on udemy and pay for the course where you have a full course by someone who has actually planned the course.
Sure sure this is free I get it!
There is a hell lot of planning when he talks, and "Designing our Game Engine" focuses on that. Also, in the discussions, people decide what should happen next.
@@microgut9104 Exactly, there is no actual planning. It's whatever people want next, which I can appreciate, but I was hoping for something that was planned and then followed.
Now it seems we are going to have to jump to another (incomplete) video series, but again... this is all free... so I can't expect much in terms of planning
@@antoniocs8873 Yeah but guess what, if it was all planned, people might have other problems, such as "Oh why that? Why not this". I think this is why Yan wants us to cooperate as well.
@@microgut9104 So your argument is that there will always be people complaining? Great argument...
@@antoniocs8873 I don't know from where you got that conclusion...