Batch Rendering - Dynamic Geometry

  Рет қаралды 84,036

The Cherno

The Cherno

4 жыл бұрын

The first 500 people who click this link will get 2 free months of Skillshare Premium: skl.sh/thechernoproject4
Patreon ► / thecherno
Instagram ► / thecherno
Twitter ► / thecherno
Discord ► thecherno.com/discord
Series Playlist ► thecherno.com/opengl
This video is sponsored by Skillshare

Пікірлер: 152
@kamiltrzcinski
@kamiltrzcinski 11 ай бұрын
21:09 "So what I'll do, is I'll go here, into our pedophile."
@kumu2024
@kumu2024 5 ай бұрын
After 3 years, still there is no "Next video" :)
@Brad_Script
@Brad_Script 2 ай бұрын
He dropped OpenGL support in his game engine because his abstraction layer doesn't work well with Vulcan. He apparently rewrote the whole thing and it's no longer compatible with OpenGL anymore. That might be why he doesn't do OpenGL videos anymore.
@kumu2024
@kumu2024 2 ай бұрын
@@Brad_Script And the bad thing is to follow the videos to learn OpenGL. as it started as an OpenGL game engine. The source code at its stage cannot be compiled. which is no good. sorry, but the whole idea of making videos about a game engine failed IMHO
@Brad_Script
@Brad_Script Ай бұрын
@@kumu2024 btw, he did release a next video. He put it in the "Batch Rendering" playlist but not the OpenGL playlist.
@NoName-ui5ou
@NoName-ui5ou 3 жыл бұрын
16:55 wait, std is short for standard? you have just revolutionized my life
@gianbernardo3388
@gianbernardo3388 3 жыл бұрын
lol
@kingsnowy3037
@kingsnowy3037 3 жыл бұрын
Well that's a relief, I thought my doctor meant something else.
@bluesillybeard
@bluesillybeard 2 жыл бұрын
@@kingsnowy3037 lol
@JustARegularPlayer
@JustARegularPlayer 2 жыл бұрын
@@kingsnowy3037 Sorry sir, but you have... *some standards.*
@packediceisthebestminecraf9007
@packediceisthebestminecraf9007 2 жыл бұрын
@@JustARegularPlayer gives a whole new meaning to " professionals have *standards* "
@Deescacha
@Deescacha 4 жыл бұрын
You're a great teacher. Very clear explanation, examples that are easy to follow. Thanks for doing this!
@AravindhSK
@AravindhSK 8 ай бұрын
Thank you so much for the incredible playlist. I learned a lot from it and truly appreciate it. Thank you again!
@sarathkrishnanramesh1938
@sarathkrishnanramesh1938 4 жыл бұрын
This is one amazing tutorial! I absolutely love your content. Keep up the good work! :)
@emcpadden
@emcpadden 2 жыл бұрын
Great!!! looking forward to another video for this series!!!
@alexiusvidalius
@alexiusvidalius 2 жыл бұрын
This Batch Rendering mini series was absolutely brilliant. :)
@thehambone1454
@thehambone1454 3 жыл бұрын
I needed this tutorial! Thanks!
@carsonholloway
@carsonholloway 3 жыл бұрын
1:44 : No one: TheCherno, February 2020: Who has tons of time lying around?
@muhammadmauludinanwar3151
@muhammadmauludinanwar3151 3 жыл бұрын
This is the best programming channel i ever seen. Thank you so much. Now i can teach it to my friends.
@mjthebest7294
@mjthebest7294 Жыл бұрын
You may also try Chili Tomato Noodle :)
@arnetriesyoutube
@arnetriesyoutube Жыл бұрын
I love it when good teachers actually give you a doable task at the end (even though I will just watch the next video to see the answer
@milo20060
@milo20060 Жыл бұрын
Definetely more opengl! Now 31 videos watched of this series. Would like to see how the 3D stuff for example would be done.
@germancaino
@germancaino Жыл бұрын
@@alastair7446 Could you tell me the name of that video, thanks!
@sebastianonofrei8180
@sebastianonofrei8180 4 жыл бұрын
Best KZbin channel in regards of programming ! Thanks a lot for the contents and for the time you invest in sharing this knowledge !
@xthebumpx
@xthebumpx 4 жыл бұрын
Checkout Jon Gjengset too. It's not c++ or game related, but his livestreams are great.
@lephobix
@lephobix Жыл бұрын
Thanks for the great tutorials!
@nyanlauncher7350
@nyanlauncher7350 3 жыл бұрын
Could you make a Vulkan tutorial series whenever you get the time for it
@Brad_Script
@Brad_Script 2 ай бұрын
sadly he doesn't
@pride5066
@pride5066 4 жыл бұрын
4:00 - give us visual a representation of your summary pls! wether its on a whiteboard or in paint .. but its ALOT easyer for me to prepare for the video when i have something to look at while youre explaining it love your videos buddy. keep it up
@DrJams
@DrJams 4 жыл бұрын
Also playlist and video numbers.
@melom806
@melom806 4 жыл бұрын
@@DrJams If you go to the openGL series all the rendering videos continue after it.
@kariakistephen508
@kariakistephen508 2 жыл бұрын
Cherno you are my inspiration
@sonictailsandsally
@sonictailsandsally 3 жыл бұрын
Would like to hear about depth buffers and overlapping geometry from multiple draw calls.
@levanapakidze1606
@levanapakidze1606 3 жыл бұрын
MORE MORE MORE, where are you cherno?!
@nancyliu2328
@nancyliu2328 4 жыл бұрын
Can you make a video about 3D collision, like add collider shape, detection?
@redent8647
@redent8647 3 жыл бұрын
google bullet3d.
@jeffrey4275
@jeffrey4275 2 жыл бұрын
Pls do
@surferriness
@surferriness 2 жыл бұрын
AABB for starters
@victorsarkisov4480
@victorsarkisov4480 Жыл бұрын
Late response, but that is done separately from rendering. Collisions between objects are calculated at world space. A collision happens when two or more regions cross paths with each other on a coordinate system. So you just have to check for that in your update cycle. That is why basic collision shapes like squares are way more performant than custom mesh colliders, since it’s much easier to see if the edge points of a shape are crossing paths with another shape.
@dandymcgee
@dandymcgee 4 жыл бұрын
Neat. I liked this video.
@pslindskog
@pslindskog Жыл бұрын
Good stuff! Question: Any reason to not use the instanced drawing call with opengl for this and get data from some storage/uniform buffer in the shader? Asking for a friend.
@alexxswx
@alexxswx 3 жыл бұрын
Is there any reason why texture ID remained as float and didn't change to something like byte once you introduced the Vertex struct?
@NoodleFlame
@NoodleFlame 2 жыл бұрын
I've just finished implementing batch sprite rendering in my engine and I was pleasantly surprised with the results. 1.4 million textured moving quads at 72fps on a laptop with a GTX 1070. I was going to see if instanced rendering would improve the speed further but as this is for a 2d engine, I won't even need half of that! Thanks for all the videos, they were very helpful as a refresher for OpenGL as its been a while since I have used it, watching them all at 2x speed was great. Might have to do the same with your engine series as I'm quite interested to see what you have implemented. Last time I wrote a 3d engine, deferred renderers were all the rage, I'm sure that has evolved now.
@ramonbrand9390
@ramonbrand9390 4 жыл бұрын
Very interesting, but the fact that you compute the vertices before sending them to the buffer raises a question, what happens to performance? Because we will now have to compute the vertex positions of objects on the CPU, and can not leverage the GPU for the matrix multiplication to calculate the positions of each object with a uniform. I understand the camera uniform still works as usual, but you can on longer upload an object position uniform, since you have multiple objects in a single buffer/draw call, thanks!
@Rand0081
@Rand0081 3 жыл бұрын
This does not answer your question, but should at least address your legit worries: "usage (GL_DYNAMIC_DRAW) is a hint to the GL implementation as to how a buffer object's data store will be accessed. This enables the GL implementation to make more intelligent decisions that may significantly impact buffer object performance. It does not, however, constrain the actual usage of the data store."
@robinkuster1127
@robinkuster1127 3 жыл бұрын
It's a matter of scale. Doing this on the CPU is simply better than drawing 2 triangles per draw call and then changing uniforms every time. Now, uniform change is not that expensive of a state change but it's still something. I never worked in game dev so I don't know anything about a real workload. I only beat my GPU into a pulp doing performance tests for my bachelor thesis on terrain rendering. But this smells a lot like a benchmarking thing where this is the obvious and most ergonomic solution and it probably works good enough that you should benchmark before you do anything else. Like, it's so simple to setup that you run into the risk of doing something that might perform better on paper but will not scale well enough.
@bluesillybeard
@bluesillybeard 2 жыл бұрын
It's possible to send the translation, rotation and scale to the GPU using a Layout rather than compiling them into a matrix, but I imagine that would be less efficient than just doing it with the CPU.
@michaelgevlich2770
@michaelgevlich2770 2 жыл бұрын
For buffers optimization. What if you want to change color, texid, or coordinates separately. it's better to have a few buffers, isn't it?
@rudra7099
@rudra7099 2 жыл бұрын
I have a question: is it a good idea to use dynamic rendering in GUI? Because the way I understand it, most GUI elements are just static quads(rectangles) some may differ in width and height, but all that can be easily adjusted in the shader using a single vertex buffer.
@henrylang699
@henrylang699 Жыл бұрын
I think a lot of people use immediate mode to draw guis
@kevinjoseph8119
@kevinjoseph8119 2 жыл бұрын
Compiler intrinsics to ensure a packed struct might be needed.
@Killerkraft975
@Killerkraft975 4 ай бұрын
Watching the previous video, I was thinking of how to do this dynamically, and the idea of just storing the data as a struct per quad and storing the quads in a vector/dynamic array to then pass to OpenGL and I'm surprised how I was right.
@davidhe6276
@davidhe6276 4 жыл бұрын
Good Job
@itachiuchiha9426
@itachiuchiha9426 4 жыл бұрын
I love this one 🥰
@DJenriqez
@DJenriqez 4 жыл бұрын
you are opengl god for me :)
@CODEDSTUDIO
@CODEDSTUDIO 4 жыл бұрын
Always watching
@55mmmm
@55mmmm Жыл бұрын
9:26 Great video and an amazing tutorial altogether, thanks a lot! Just curious however, why wouldn’t the texture ID be an integer instead of a float?
@mariovelez578
@mariovelez578 Жыл бұрын
because it's a float array
@EECyrpys
@EECyrpys 11 ай бұрын
I'm new to this, but think about this: the vertex shader is interpolating the indices just like it is interpolating the vertex positions and the colours, and sending the interpolated values to the fragment shader. You can't interpolate integers, so the GPU probably converts everything to floats anyway. Over here he is essentially using a little trick, by sending all the vertices of a triangle 1.0f, for example, all the interpolated points also have 1.0f, and then he casts that as an integer to index the array.
@chakibchemso
@chakibchemso 9 ай бұрын
I would definitely batch static and dynamic geometry separately, resulting in two draw calls. Which is not bqd given that the static batch is not updating as often as the dynamic!
@wireghost897
@wireghost897 7 ай бұрын
Remember, even a veteran like Cherno can forget C++ syntax and make mistakes.
@Tr3Calls
@Tr3Calls 3 жыл бұрын
Still waiting for next video!
@aadithyasathyanarayananbal7565
@aadithyasathyanarayananbal7565 3 жыл бұрын
Hi Cherno ... Are you taking any classes in skillshare ?
@sonicspeedalyt8508
@sonicspeedalyt8508 9 ай бұрын
Hi. Can you do a tutorial on d3d12?
@ThatJay283
@ThatJay283 3 жыл бұрын
This tutorial helped me a-lot with my game (Project Zombie). I was using the old version of OpenGL before and I was getting ~60-30 fps on my desktop and ~15-30 fps on my laptop. I added batch rendering to each "chunk" of tiles (chunks in Project Zombie work pretty similar to Minecrafts chunks but its 2D. I am using GL_STATIC_DRAW for chunks, but only because chunks don't change much (thats what entities are for), so I just free and reallocate the chunk data when I need to refresh the data (Is this ok performance wise?). I can already see the results of this because without entities I'm getting ~800 fps, which is actually the fps cap because my games mainloop handler can't do microseconds of accuracy. I will use this with my games particle system, because my current implementation is spawning thousands of particles. I have optimised somewhat by grouping them together, but theres still a significant frame drop when theres lots of particles. I will try out GL_DYNAMIC_DRAW for particles soon. Thank you for this tutorial.
@krinjon193
@krinjon193 4 жыл бұрын
can anybody tell me how to customize the fonts and styles like in his code. methods and macros all have different styles.
@vaskomarinov7042
@vaskomarinov7042 3 жыл бұрын
will there be more episodes?
@ixXgamerXxi
@ixXgamerXxi 4 жыл бұрын
I love you
@shinystick241
@shinystick241 2 жыл бұрын
Cover 3d please!
@colemanengbrecht4448
@colemanengbrecht4448 4 жыл бұрын
Have you given any thought to using OpenGL 4.2+ with direct state access and AZDO rendering techniques? I've found the learning material on this subject is sparse, limited to a few talks from Nvidia and the Khronos wiki. These techniques provide a sort of middle ground between OpenGL and Vulkan and end up simplifying the legacy cruft in OpenGL.
@davidste60
@davidste60 4 жыл бұрын
Would that work well on AMD and Intel?
@jukit3906
@jukit3906 2 жыл бұрын
@@davidste60 it should, if you support OpenGL 4.3
@davidste60
@davidste60 2 жыл бұрын
@@jukit3906 should isn't a good word in graphics api programming usually...
@jukit3906
@jukit3906 2 жыл бұрын
@@davidste60 i mean it does lol
@davidste60
@davidste60 2 жыл бұрын
@@jukit3906 Okay thanks haha
@rikseth9606
@rikseth9606 4 жыл бұрын
what if I want a vertex data to store something else like normal and for some other, I need to store tangent too while for others I don't need them at all then how can I change the Vertex struct to hold the vertex data I want?
@DexterLolInd
@DexterLolInd 4 жыл бұрын
You either divide it into two chunks, each with separate vertex data, or you simply give default values to your geometry. Though I don't see why you would need normals and tangents for a 2d quad, their normals are always the same depending on how you render it so you can hardcode the values.
@rikseth9606
@rikseth9606 4 жыл бұрын
@@DexterLolInd I was into a little bit 3D stuff.....
@wothin
@wothin 4 жыл бұрын
@@rikseth9606 im no expert but AFAIK it's quite frequent to include the normals even if not always needed, as long as you actually need it sometimes. Also, again without guarantee, the much bigger bottleneck is the process of sending stuff from your CPU to the GPU (draw calls e.g.) than the actual amount of data. Sure if ur GPU doesn't have that much vram the amount is important, but sending stuff to your GPU takes almost the same amount of time be it the newest and post powerful one or be it some weak one
@theRealSPACEDANCE
@theRealSPACEDANCE 4 жыл бұрын
It's very common to store normals too yes. What I normally have (which is the most common way AFAIK) is a Vertex struct containing positions, texture coordinates and normals. That's all you really need for 3D rendering. Positions would just be offsets for the individual vertices, you would have a transform struct of some kind actually holding the position, scale and rotation of the object somewhere else. Then in the shader you would multiply this together with matrix math to actually move the quad (or something like a cube in 3D). Normals, Texture coordinates and Tangents can definitely be calculated with math in the shader so you don't have to hardcode them, you would do this in a situation where you have a 3D object that dynamically can change the number of vertices it needs to render. Especially tangents, that's something you would definitely calculate in the shader when you need them, as they are quite niche in a way.
@inanme
@inanme 3 жыл бұрын
1am finished entire course at 2x playback speed.
@vinzenth602
@vinzenth602 3 жыл бұрын
were you able to understand everything? :D
@RetroEcoChicken
@RetroEcoChicken 2 жыл бұрын
what if i want to rotate the texture? can you make a video on that?
@ubire2676
@ubire2676 Жыл бұрын
Shouldn't be that hard. Vertices positional data * Rotation Matrix = the vertices that should be uploaded to the GPU.
@hashcash7340
@hashcash7340 4 жыл бұрын
can you make video about: lvalue / rvalue move semantics
@krinjon193
@krinjon193 4 жыл бұрын
i am getting "expression must be a modifiable lvalue" while setting the arrays of Vertex struct inside Create quad method. Can you help
@ubire2676
@ubire2676 Жыл бұрын
LValues are essentially something that produces a reference, while RValues is some arbitrary thing not associated with a object, ex. string literals
@awuuwa
@awuuwa 2 жыл бұрын
Multithreading OpenGL. video suggestion
@minidupasan1520
@minidupasan1520 Жыл бұрын
Is this series finished?
@unsafecast3636
@unsafecast3636 3 жыл бұрын
I think that the Vertex struct should have the packed attribute, otherwise it might rearrange stuff. Or maybe that's just with C? Let me know if I missed anything. Amazing explanation btw!
@ubire2676
@ubire2676 Жыл бұрын
Yes, technically, but I suggest not using it. Alignment is platform architecture constraint, and misalligned data can be expensive. offsetof() takes in consideration with the padding.
@rhodexa
@rhodexa 4 жыл бұрын
Then you have us... plain artists trying to create our own softwares to use our own art xD
@ubire2676
@ubire2676 Жыл бұрын
At that point, just use SDL :)
@rhodexa
@rhodexa Жыл бұрын
@@ubire2676 SDL is terrible. I've tried it: easy to use, nice support for different platforms and all, but the flexibility is not so great. The fact that it just locks up when you move windows is just annoying. There's a point where when you tried to solve all it's problems you discover you're just using plain OpenGL again and SDL is just there to open the window. Im also kinda dumb trying to re invent the wheel, but hey maybe I failed to make what I wanted, but learned a lot about C++! lol
@ubire2676
@ubire2676 Жыл бұрын
@@rhodexa you also have Raylib.
@rhodexa
@rhodexa Жыл бұрын
@@ubire2676 Ooo... never heard of it, looks very promising. I gotta check it out and try it
@ubire2676
@ubire2676 Жыл бұрын
@@rhodexa Yes, it has a huge community behind it, alongside support for 3/2D drawing. It also has its own UI library so you don't have to reinvent the wheel again. Let me know what you think 😊
@nelzkie777
@nelzkie777 3 жыл бұрын
are you going to keep doing this? please do
@averagecornenjoyer6348
@averagecornenjoyer6348 3 жыл бұрын
I guess you'll have to watch the game engine series
@icaroamorim3123
@icaroamorim3123 4 жыл бұрын
Maybe you could do an inspirational video about the field it self. Atracting more peaple to graphics
@frederikja2210
@frederikja2210 4 жыл бұрын
Icaro Amorim i think this is a good idea however attracting more people might not be too good either actually as it is such a complex topic, i see way to many people jump straight into graphics rendering. as a role of maintainer on multiple opengl bindings for C# this is often quite annoying, for reference i once had to teach someone working with opengl how to make an if statement and what an integer was. when i ask some people to debug or log to the console they also dont know what this means.
@KamillaMirabelle
@KamillaMirabelle 2 жыл бұрын
I like your videos, mostly because you are clear and fast. One thing though. The data you want to push to the GPU, is most likely not in the CPU, since it has very limited space in general. It would also be highly inefficient to let the data pass through the CPU on the way to the GPU. Dependent on the specific setup in a computer, the CPU would read an instruction, which says "Tell the PCIe to push data from location x through y to the GPU". otherwise, the CPU would not be able to compute some other important task, like handling the OS. Put it in another way it would be the same as first pumping wastewater up to the 20th floor just so you could fall down again through the pipes. My explanation is still a simplification of what is happening and properly flawed.
@KamillaMirabelle
@KamillaMirabelle 2 жыл бұрын
Sorry for being a little hostile. :D I just can't help myself when someone says something wrong.
@TheCherno
@TheCherno 2 жыл бұрын
I’m not sure exactly which section you’re referring to, but the term “CPU” typically refers to system RAM (CPU RAM), as opposed to the GPU which usually has its own (VRAM). I’m of course not referring to CPU cache when I talk about transferring data from the CPU to the GPU. The only way we can transfer data to the GPU is via CPU RAM (aside from the new GPUDirect Storage tech). If I’m misunderstanding what you mean, please let me know.
@KamillaMirabelle
@KamillaMirabelle 2 жыл бұрын
It is totally okay 🙂 I'm use to treating them as separate components. Thanks for the respons
@MrStarTraveler
@MrStarTraveler 3 ай бұрын
The tutorial is unfinished. I really hoped I'm gonna see a textured cube tumbling on the screen.
@_sevelin
@_sevelin 4 жыл бұрын
Nobody: The Cherno: Drawering
@Coding-to4zj
@Coding-to4zj 11 ай бұрын
I would just slap him if i was the boss in the office seeing those two memcopy
@karsten4849
@karsten4849 2 жыл бұрын
Yes, buy wear 3d?
@qikaili5821
@qikaili5821 4 жыл бұрын
Does dynamic mean that I have to create an array every frame? Won't it be slow?
@wothin
@wothin 4 жыл бұрын
Depends. It's slower than creating one big buffer and then changing parts of it but not that slow that you will notice that with only a few dozen vertices I think he will so that later i think, since many batch renderer are doing that. He simply shows the basics
@gallilos
@gallilos 3 жыл бұрын
no 3d?? upuntill now? :(
@kenamreemas3295
@kenamreemas3295 4 жыл бұрын
a bit out of context of this video. but, i want to create my own pixel art for my game but have 0 knowledge about animation and blender.. any good series i can start with?
@garageman2236
@garageman2236 2 жыл бұрын
"next video"
@jetweilee1645
@jetweilee1645 2 жыл бұрын
so it's ABOUT 2years where is the next video lol
@spacetimporal
@spacetimporal Жыл бұрын
Hi, if want to destroy my console, how can i do it?
@taurasandaras4699
@taurasandaras4699 Жыл бұрын
with a hammer
@itzcrazydan
@itzcrazydan 4 жыл бұрын
1:44 - Oh how times have changed haha :p
@jalomic
@jalomic 3 жыл бұрын
Где новые видео? :(
@samuelrasquinha6712
@samuelrasquinha6712 4 жыл бұрын
Why not provide a github link with each episode tagged or a link to the commit? Would be very helpful.
@p3rk4n27
@p3rk4n27 Жыл бұрын
I just can't seem to understand how the hell uploading vertex data to GPU each frame can be faster than drawing each mesh independently
@ItsNoGoodJrGaming
@ItsNoGoodJrGaming Жыл бұрын
Well, from what I understand, if you want your meshes to move independently, you will need to somehow upload that data to the GPU each frame anyways. Sure, you can do that by setting uniforms and drawing each mesh independently... or, you can set the buffer once and draw all meshes in one draw call. The latter should be faster for large numbers of simple meshes: Draw calls, while not terribly expensive, are not free. When you're rendering something that only has 4 vertices, a significant amount of the processing time could be spent on the draw call's overhead, because it's trivial for your GPU to draw two triangles. Instead, you want to draw as much as you can in a single call, thus only incurring that overhead cost once.
@ItsNoGoodJrGaming
@ItsNoGoodJrGaming Жыл бұрын
Though I'm sure there's probably faster ways of doing this than in the video too, I'm still learning opengl so
@p3rk4n27
@p3rk4n27 Жыл бұрын
@@ItsNoGoodJrGaming i was thinking, what if draw call uploads that to gpu? Then there is actually no difference, except here it sends data in a bulk... or vertex data just stays in VRAM until you change it?
@ItsNoGoodJrGaming
@ItsNoGoodJrGaming Жыл бұрын
@@p3rk4n27 I don't know the details but I just know draw calls require a lot of setup on the opengl side of things, so you don't want to have thousands of draw calls. I don't know if it has anything to do with the data transfer at all. The reason we send the data in bulk is because we have to in order to have one draw call. Can't update uniforms in-between a single draw call. Also this got me really curious and there's a technique I found called instancing which is another method similar to batching that helps reduce draw calls.
@sghsghdk
@sghsghdk 4 жыл бұрын
nice video ...... however ...... you loose almost every advantage of VBOS. The main thing is that now everything is copied in its entirety for every frame. That will not work if you have 50MB of data. So it would have been nice with a video on how to update only the things that change.
@totallynuts7595
@totallynuts7595 4 жыл бұрын
Just figured it out glBufferSubdata can be used to replace data in a buffer. You can specify the offset in bytes as a parameter from which to start replacing. So, in code it would be something like: glBufferSubdata(GL_ARRAY_BUFFER, index*sizeof(quad), sizeof(newVertices), newVertices); //where index is the variable that tells you which quad to replace
@jasonargo4459
@jasonargo4459 2 жыл бұрын
@@totallynuts7595 So would using glBufferSubData eliminate the need to even dynamically draw in the first place since any vertices that need replacing statically can be replaced per OnRender frame?
@jukit3906
@jukit3906 2 жыл бұрын
@@jasonargo4459 glBufferSubData just allows you to modify data into the vbo from what I understand, but each gl call will take performance, thats why you should always batch vertex data before glBufferSubData
@ambrosejesuraj7145
@ambrosejesuraj7145 4 жыл бұрын
Bro how to I learn openGL using visual studio 2019 community version. bcz justnow I started learning openGL.I am try to use c++ in vs 2019. I am unable to do it. is there any good ide for make openGL projects? pls reply me.
@beProsto
@beProsto 4 жыл бұрын
Visual Studio might be a little overwhelming when trying to do such simple things. If you want something a little worse, but a lot simpler and without having to use the compiler itself, try codeblocks. A lot of people will tell you not to, will shame me for recommending it, but honestly - for that purpose its good enough.
@ambrosejesuraj7145
@ambrosejesuraj7145 4 жыл бұрын
@@beProsto shall i make game susing this?
@pride5066
@pride5066 4 жыл бұрын
@@ambrosejesuraj7145 no. please dont start serious projects with it.. but if youre making a game just for the sake of learning. use codeblocks!
@ambrosejesuraj7145
@ambrosejesuraj7145 4 жыл бұрын
@@pride5066 Thank you. Another question, which IDE is best for OpenGL ?
@ambrosejesuraj7145
@ambrosejesuraj7145 4 жыл бұрын
@@pride5066 codeblocks only runs on Wondows and Linux. but I am using Mac.
@supersim1357
@supersim1357 4 жыл бұрын
This is kind of unrelated to this video, but are you concerned that your diy game engine uses ~100mb to draw two squares? Do you plan on optimizing it in the future?
@TheCherno
@TheCherno 4 жыл бұрын
100mb? Where are you getting that from? I just checked the current public branch of Hazel and it's using around 30mb for a Release build. We're definitely going to take a look at memory usage in the future but right now it's too early anyway.
@supersim1357
@supersim1357 4 жыл бұрын
@@TheCherno Oh, well that's pretty good, maybe I made a mistake. On another note, did you learn this stuff in college or is it mostly from experience?
@TheCherno
@TheCherno 4 жыл бұрын
Supersim135 mostly from experience, working on core technology at EA
@pooria_garrett3020
@pooria_garrett3020 4 жыл бұрын
2nd
@rolpon2871
@rolpon2871 2 жыл бұрын
hello
@pooria_garrett3020
@pooria_garrett3020 2 жыл бұрын
@@rolpon2871 hey ...
@elmosco593
@elmosco593 4 жыл бұрын
I just saw one of your videos from 2 years ago and then jumped into this one to see if one observation I have could be helpful today. Your background is too distracting, I would recommend for you to get a less distracting one. It will help us focus more on what you are teaching.
@noname9516
@noname9516 4 жыл бұрын
First
@rolpon2871
@rolpon2871 2 жыл бұрын
hello
@rudejehlici5425
@rudejehlici5425 4 жыл бұрын
It's pretty annoying to be learning some stuff with you as you make videos like once a few weeks or even months. I don't have the time for that, I can wait months or years to learn something I can learn in a few weeks or even less. What I suggest you is to not have many half done video series, but focus on finishing them. And I don't mean like explain and teach everything, but I suggest you to finish the stuff you're working on. F.e. in this series... to explain such an important thing as batching, it took you half a year or even more. If I start working with OpenGL now, I still feel I miss some important features and tricks you didn't explain us... yet, and with that I feel like I'm not capable of doing the OpenGl stuff yet, because it's gonna be slow, inefficient, unorganized... I need to know I already know the important stuff and I already have the tools to start programming. I didn't want to go so deep into this problem, just... please focus on finishing tutorial series
@asteriskman
@asteriskman 4 жыл бұрын
Why not provide a github link with each episode tagged or a link to the commit? Would be very helpful.
Она Постояла За Себя! ❤️
00:25
Глеб Рандалайнен
Рет қаралды 6 МЛН
ШЕЛБИЛАР | bayGUYS
24:45
bayGUYS
Рет қаралды 604 М.
Mini Jelly Cake 🎂
00:50
Mr. Clabik
Рет қаралды 17 МЛН
Она Постояла За Себя! ❤️
00:25
Глеб Рандалайнен
Рет қаралды 6 МЛН