VehiclesFashionRecipesBlogsHuntTravelsSportFunHandmadeITEducation
Mini-Games
x

x
zakruti.com » IT - Software » freeCodeCamp.org
OpenGL Course - Create 3D and 2D Graphics With C++

OpenGL Course - Create 3D and 2D Graphics With C++

FBTwitterReddit

video description

Rating: 4.5; Vote: 2
Learn how to use OpenGL to create 2D and 3D vector graphics in this course. Code: https://github.com/VictorGordan/opengl-tutorials -- Contents -- Introduction 0:00:00 Introduction to Course Install 0:00:00 Downloads 0:02:11 Setting Up VS Project 0:02:50 Generating GLFW 0:03:29 Build Solution GLFW 0:04:03 Importing Libraries 0:04:53 Configuring VS 0:06:02 Finishing up & Testing Window 0:06:36 Initializing GLFW 0:07:03 Configuring GLFW 0:08:26 Creating Window 0:09:53 While Loop 0:11:01 OpenGL Viewport 0:11:36 Buffer Explanation 0:12:55 Adding Color 0:14:03 Comments for Window Triangle 0:14:25 Graphics Pipeline 0:16:56 Shaders Source Code 0:17:24 Vertices 0:18:54 Vertex and Fragment Shaders 0:20:45 Shader Program 0:21:36 Vertex Buffer Object 0:24:35 Vertex Array Object 0:26:57 Cleaning Up 0:27:34 Rendering Loop 0:28:38 Comments for Triangle Index Buffer 0:29:24 Normal Triangle 0:29:47 Duplicate Vertices 0:30:06 Solution 0:30:26 Index Buffer 0:30:51 Implementation 0:32:22 Comments for Index Buffer Organizing 0:32:33 Introduction to Organizing 0:32:43 Shader Text Files 0:33:21 Shader Class 0:35:27 VBO Class 0:36:18 EBO Class 0:36:35 VAO Class 0:37:36 Adding Classes to Main.cpp 0:37:59 Comments for Organizing Shaders 0:38:34 Introduction to Shaders 0:38:44 Shaders Properties 0:38:57 Vertex Shader 0:40:01 Fragment Shader 0:40:17 Adding Colors 0:41:23 Modifying the VAO class 0:41:54 Vertex Attribute Pointer Explanation 0:43:09 linkAttrib Code 0:43:19 Interpolation 0:43:50 Uniforms 0:46:08 Error Checking Shaders 0:46:29 Comments for Shaders Textures 0:46:39 Types of Textures 0:46:54 stb Library 0:47:58 Square 0:48:14 Texture Sizes 0:48:37 Importing in an Image 0:49:19 Creating the Texture 0:49:43 Texture Units 0:50:19 Interpolation Types 0:51:11 Texture Mapping 0:52:27 Assigning the Image to the Texture 0:53:10 Errors 0:53:21 Mipmaps 0:53:50 Texture Coordinates 0:54:15 Vertex and Fragment Shaders 0:54:51 Finishing up 0:55:39 Texture Class 0:55:56 Comments for Textures Going 3D 0:56:01 Introduction to Going 3D 0:56:11 Correction 0:56:23 Matrices 0:56:57 GLM 0:57:26 Coordinate Types 0:58:35 Transformation Matrices 0:59:13 Matrix Initialization 0:59:41 View & Projection Matrices 1:01:16 Importing Matrices 1:01:53 Matrices Final Multiplication 1:02:07 Pyramid 1:02:41 Rotation & Timer 1:03:11 Depth Buffer 1:03:36 Comments for Going 3D Camera 1:04:11 Header File 1:05:04 Basic Camera Class Functions 1:05:54 Main File Changes 1:06:21 Vertex Shader Changes 1:06:43 Key Inputs 1:07:38 Mouse Inputs 1:09:21 Fixing Camera Jumps 1:09:49 Comments for Camera Lighting 1:10:13 Modify Camera 1:10:30 Light Cube 1:10:50 Light Color 1:12:03 Diffuse Lighting & Normals 1:15:36 Ambient Lighting 1:16:18 Specular Lighting 1:17:54 Comments for Lighting Specular Maps 1:18:15 Modify Texture Class 1:18:34 Plane With Texture 1:19:06 Specular Maps Theory 1:19:30 Implementing Specular Maps 1:20:06 Ending for Specular Maps Types of Light 1:20:16 Types of Light 1:20:26 Point Light 1:20:41 Intensity Attenuation 1:20:51 Inverse Square Law 1:21:03 CG Intensity Equation 1:21:36 Implementation of Attenuation 1:22:09 Directional Light 1:22:52 Spotlight 1:23:08 Light Cones 1:23:18 Cones Comparison 1:23:31 Cos vs Angle 1:23:45 Finishing the Spotlight 1:24:19 Comments for Types of Light Mesh Class 1:24:33 Introduction for Mesh Class 1:24:46 Mesh Definition 1:25:01 Mesh Class Header 1:25:58 Modify the VBO Class 1:27:06 Modify the EBO Class 1:27:16 Mesh Constructor 1:27:41 Rearrange Shader Layouts 1:28:10 Mesh Draw Function I 1:28:51 Modify the Texture Class 1:29:22 Mesh Draw Function II 1:29:54 Modify the Uniforms 1:30:20 Main.cpp Changes 1:31:06 Comments for Mesh Class Model Loading 1:31:28 Introduction for Model Loading 1:31:47 Small Note on 3D Models 1:32:27 JSON Library 1:32:41 Model Header 1:33:03 Model.cpp File 1:33:13 JSON File Structure 1:33:30 Getting the Binary Data 1:34:07 glTF File Structure 1:36:28 getFloats() and getIndices() 1:39:09 Grouping Functions 1:39:19 assembleVertices() 1:39:50 Modifying the Texture Class 1:40:22 getTextures() 1:41:50 loadMesh() 1:42:23 Matrix Transformations Explanation 1:42:54 traverseNode() Declaration 1:43:28 Modifying the Mesh Class 1:43:41 Modifying the Vertex Shader 1:44:15 traverseNode() Writing 1:45:18 Modifying the Main.cpp File 1:45:28 Examples of Models 1:46:01 Comments for Model Loading
Date: 2022-03-14

Comments and reviews: 10


You plus the OpenGL/C++ 3D Tutorial by Suraj Sharma combined has helped me learn a lot really quickly for starting to do a 3d game.
The only thing I feel like you could have touched on is Resizing the window which i later on found out I could to by changing the width and height from 'const static int' to just 'int' and then in the while loop do this:
--glfwGetFramebufferSize(window, &width, &height);-
--glViewport(0, 0, width, height);-
--camera.Matrix(45.0f, 0.1f, 100.0f, shaderProgram, -camMatrix-, height, width);
I added int height and width to the camera::matrix function in Camera.cpp and .h to update the camera size or else everything just stretched whenever I resized the window
but for anyone else experiencing this issue here you go : )
(oh yea, you also need 'glfwWindowHint(GLFW_RESIZABLE, GL_TRUE);' by all the other glfwWindowHint's for resizing)

reply

I like to try to code side by side with tutorials so i can easier keep in track and focus better. The biggest problem and maybe the -only- problem with this tutorial is that 99% of the code stuff is speedran so it's very hard to understand what's going on. I feel like this is done only to make the tutorial shorter and make it look like oh, it's a course under 2 hours but in reality it's probably 3-4x the size :/ I don't want to keep checking git to make sure i wrote the same thing but i want it all to be there for me in the tutorial. Now other than that alot of the information given is very very good and the quality in general of the tutorial is very high quality. But the whole speedrun tactic is very very bad, in my opinion..
reply

I can't memorize any of this. It would have helped, if there were more explanations on what a given library or function does. Making a -plan of action- at the beginning of each section would have also been helpful: explain the problem; give basic idea of what steps we take to solve it; more in-depth explanation on how the computer views it; code implementation. Right now I am forced to search up what each function does and why possibly we should use it. This has tormented me to the point, where I'm questioning, if there aren't better tutorials and if I'm wasting my time pausing the video every 3 seconds to look up what you're doing.
reply

17:20 - if anyone is interested, here is the code he pasted.-
(if you have the laziness to go through GitHub).
// Vertex Shader source code-
const char- vertexShaderSource = -#version 330 core\n--
-layout (location = 0) in vec3 aPos;\n--
-void main()\n--
--\n--
- gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n--
--\0-;-
//Fragment Shader source code-
const char- fragmentShaderSource = -#version 330 core\n--
-out vec4 FragColor;\n--
-void main()\n--
--\n--
- FragColor = vec4(0.8f, 0.3f, 0.02f, 1.0f);\n--
--\n\0-;

reply

Hello, nice tutorial for starters, but you should really work a bit harder on the c++ part to not educate people to use wrong habits such as searching vectors of strings using for instead of std::find, or instead of reinterpret_cast to memcpy an array of bytes to a float.
reply

My code for the camera section is almost word for word same as the code shown in the video. Yet
1) the texture isn't loading
2) I cant move around the pyramid by pressing the wasd keys. I have printed the key pressed and that works.
How to debug openGL codes

reply

my suncube got created at the center. i have no clue why as the sun is in the right position but there is a pyramide collored,untextured cube in the center of my pyramid instead of a suncollored cube on the other side.
reply

Hello. Great video so far, just that I have a problem. I've followed the steps so far but it's the error message we create that's being outputted (-Failed to create GLFW window-). I don't know why. Please help out
reply

not sure if anybody else encountered this problem but I had to (manually) include three additional library directories in order to run/debug the program; those were opengl32.lib, ucrtd.lib, and msvcrtd.lib
reply

-Step 1: start your project by installing 5 different libraries and rewriting the source code of windows-
This is why i keep on giving up on C++. Well, guess I'm gonna have to do it anyway.

reply
Add a review, comment






Other channel videos