Welcome to OpenGL

The Cherno
17 Sept 201716:03

Summary

TLDRIn this introductory OpenGL video, The Cherno explains what OpenGL is—a graphics API allowing developers to access and control the GPU for rendering graphics. He clarifies misconceptions, noting OpenGL is a specification, not a library or framework, and is implemented by GPU manufacturers, not open source. The Cherno emphasizes OpenGL's simplicity and cross-platform capabilities, making it an excellent choice for learning and small projects, but not ideal for large-scale game development. The series will cover modern OpenGL, focusing on raw API usage without creating an engine, and will explore 2D and 3D graphics, shaders, lighting, and advanced rendering techniques.

Takeaways

  • 😀 The Cherno is starting an OpenGL series on graphics programming, which he's excited to cover.
  • 🔍 OpenGL is a graphics API (Application Programming Interface) that provides functions to manipulate graphics.
  • 💡 An API is a set of functions that allow for interaction with hardware, like the GPU, for drawing graphics.
  • 🚫 OpenGL itself is not a library, engine, or framework; it's a specification that defines what functions should do.
  • 📥 You don't download OpenGL; it's implemented by GPU manufacturers in their drivers, and implementations can vary.
  • 🔒 Despite its name, OpenGL is not open source, as the actual code is implemented by GPU manufacturers privately.
  • 🌐 OpenGL is cross-platform, allowing the same code to run on various operating systems like Windows, Mac, Linux, iOS, and Android.
  • 🤔 The Cherno expresses a personal preference for DirectX 11 over OpenGL for its API design, especially for game engines.
  • 📚 The series will focus on modern OpenGL, which is significantly different from legacy OpenGL, offering more control through programmable shaders.
  • 🛠️ Viewers will learn raw OpenGL without creating a game engine or framework, focusing on understanding how OpenGL works.
  • 👨‍🏫 This educational series aims to teach OpenGL in C++, emphasizing its simplicity and cross-platform capabilities for learning graphics programming.

Q & A

  • What is OpenGL and what does it stand for?

    -OpenGL stands for Open Graphics Library. It is a graphics API, which is a set of functions that can be called to perform certain tasks related to graphics, specifically allowing access to the GPU for drawing graphics.

  • Why is OpenGL considered a graphics API?

    -OpenGL is considered a graphics API because it provides a way to interact with the GPU, enabling developers to perform graphics-related tasks by calling a series of predefined functions.

  • What is the difference between OpenGL and a graphics library or engine?

    -OpenGL is not a library or an engine. It is a specification that defines a set of functions for graphics operations. An implementation of OpenGL is provided by GPU manufacturers, not by the OpenGL specification itself.

  • Why can't you download OpenGL like a regular software application?

    -You can't download OpenGL because it is not an application or a library with code. It is a specification, and the actual implementation is provided by GPU manufacturers in the form of drivers.

  • Is OpenGL open source?

    -No, OpenGL is not open source. The term 'open' in OpenGL does not refer to open source; it refers to the fact that it is a publicly available specification. The implementations by GPU manufacturers are typically not open source.

  • What is the main advantage of OpenGL being cross-platform?

    -The main advantage of OpenGL being cross-platform is that the same OpenGL code can run on different operating systems like Windows, Mac, Linux, iOS, and Android, making it easier to develop applications that work across multiple platforms.

  • What is the difference between legacy OpenGL and modern OpenGL?

    -The main difference between legacy and modern OpenGL is the use of shaders. Modern OpenGL provides more control over the GPU through programmable shaders, while legacy OpenGL relied on a set of presets for graphics rendering.

  • Why is the speaker not the biggest fan of OpenGL?

    -The speaker is not the biggest fan of OpenGL because they find it less efficient and more complex compared to other APIs like DirectX 11. They also mention that OpenGL's cross-platform nature can sometimes lead to inconsistencies and bugs across different platforms.

  • What will the upcoming video series focus on?

    -The upcoming video series will focus on teaching modern OpenGL, covering how it works and how to achieve various graphics tasks using raw OpenGL code without creating a game engine or framework.

  • What topics will be covered in the OpenGL video series?

    -The series will cover a wide range of topics including 2D and 3D graphics, lighting, shadows, deferred rendering, physically based rendering, post-processing effects like bloom and sprays, ambient occlusion, and screen space reflections.

  • Why is C++ chosen as the programming language for the OpenGL series?

    -C++ is chosen for the OpenGL series because the speaker believes it is the best language for graphics programming, offering the necessary control and performance for working with OpenGL.

Outlines

00:00

🎮 Introduction to OpenGL Series

In this introductory paragraph, the Cherno announces the start of an OpenGL series, expressing excitement for finally covering this topic. He clarifies that OpenGL is a graphics API, which is a set of functions used for graphics manipulation, specifically to access and control the GPU. The Cherno dispels common misconceptions about OpenGL, explaining that it is not a library, engine, or framework but rather a specification defining how to interact with the GPU. He also discusses the role of GPU manufacturers in implementing OpenGL and addresses the myth that OpenGL is open source. The paragraph concludes by emphasizing OpenGL's cross-platform capabilities, which allow the same code to run across various operating systems.

05:02

🔍 Understanding OpenGL's Misconceptions and Cross-Platform Nature

This paragraph delves deeper into misconceptions about OpenGL, particularly the idea that it is superior due to its cross-platform nature. The Cherno argues against this notion, stating that platform-specific APIs like DirectX are often more powerful and better optimized. He also touches on the simplicity of OpenGL compared to more complex, lower-level APIs like DirectX 12 and Vulkan, suggesting that OpenGL might be the easiest API to learn currently. The paragraph highlights the author's personal preference for DirectX 11 in terms of API design and explains that while Vulkan is cross-platform, it is still maturing and not yet ready for shipping games. The Cherno positions OpenGL as an excellent choice for learning and small personal projects due to its simplicity and cross-platform capabilities.

10:02

🛠️ Modern OpenGL and Its Distinction from Legacy OpenGL

The Cherno introduces the concept of Modern OpenGL, differentiating it from Legacy OpenGL. He explains that Modern OpenGL provides more control over the GPU through programmable shaders, which are programs that run on the GPU to perform graphical tasks more efficiently. The paragraph contrasts the simplicity and preset nature of Legacy OpenGL with the flexibility and power offered by Modern OpenGL's shaders. The Cherno emphasizes the importance of shaders in achieving complex graphics effects and the series' focus on Modern OpenGL to cover these advanced topics. He also clarifies that the series will not be creating a game engine but will instead concentrate on understanding and implementing OpenGL for graphics programming.

15:04

📝 Series Overview and Upcoming Content

In the final paragraph, the Cherno outlines the scope and content of the OpenGL series. He confirms that the series will focus solely on OpenGL, covering raw OpenGL code without abstracting it into a game engine or framework. The series will explore 2D and 3D graphics, including advanced topics like lighting, shadows, deferred rendering, and post-processing effects. The Cherno also mentions his intention to ensure cross-platform compatibility and his choice of C++ as the programming language for the series. He concludes by expressing excitement for the upcoming episodes, which will begin with setting up a window and rendering a triangle using OpenGL.

Mindmap

Keywords

💡OpenGL

OpenGL, which stands for Open Graphics Library, is a cross-platform graphics API used for rendering 2D and 3D vector graphics. In the video, it is the central topic, with the speaker discussing what OpenGL is, its capabilities, and how it allows developers to access and control the GPU for graphics processing. The script mentions that OpenGL is not a library or engine but a specification that is implemented by GPU manufacturers, emphasizing its role in graphics programming.

💡Graphics API

A Graphics API, or Application Programming Interface, is a set of functions that allows programmers to interact with a system's hardware for rendering graphics. The video script explains that OpenGL is a graphics API that provides access to the GPU, enabling the creation of graphical applications. It is contrasted with other APIs like Direct3D and Vulkan, highlighting the variety of options available for graphics programming.

💡GPU

GPU stands for Graphics Processing Unit, which is a specialized hardware designed to accelerate the creation of images for a frame buffer intended for output to a display. The script discusses the importance of the GPU in graphics rendering and how OpenGL serves as an interface to utilize the GPU's capabilities for drawing graphics.

💡Specification

In the context of the video, a specification outlines a set of rules or guidelines that define how something should be constructed or behave. OpenGL is described as a specification that lists the functions and parameters for a graphics API, without providing an implementation, which is then provided by GPU manufacturers.

💡Cross-platform

The term 'cross-platform' refers to the ability of software to work on multiple operating systems or platforms without changes. The script mentions that OpenGL's cross-platform nature is one of its key features, allowing developers to write code that can run on various systems like Windows, Mac, Linux, iOS, and Android.

💡Shader

A shader is a small program that runs on the GPU and is used for various graphical effects like lighting, shading, and more. The video script explains that shaders are a significant aspect of modern OpenGL, allowing developers to write code that runs directly on the GPU for more control and optimization in graphics rendering.

💡Modern OpenGL

Modern OpenGL refers to the updated version of the OpenGL API that supports more advanced and flexible graphics programming techniques, including the use of programmable shaders. The script differentiates modern OpenGL from legacy OpenGL, emphasizing the increased control and programmability offered by the modern version.

💡Legacy OpenGL

Legacy OpenGL refers to the older version of the OpenGL API that was simpler and used preset functions for graphics rendering. The script contrasts legacy OpenGL with modern OpenGL, highlighting the limitations of the former in terms of control and flexibility compared to the latter.

💡Game Engine

A game engine is a software framework designed to facilitate the creation and development of video games. The script mentions that while the OpenGL series will not focus on creating a game engine, there will be another series dedicated to making a game engine that will utilize OpenGL as one of its rendering APIs.

💡Direct3D

Direct3D, also known as Direct Graphics, is a part of the DirectX API and is used for 3D graphics acceleration in Windows. The script compares Direct3D with OpenGL, discussing the advantages of using platform-specific APIs like Direct3D over cross-platform APIs in certain development scenarios.

💡Vulkan

Vulkan is a low-level, cross-platform API for 3D graphics, 2D graphics, and compute operations on many platforms. The script briefly mentions Vulkan as another cross-platform graphics API, noting its status as a newer technology that may require more development and stabilization before being widely adopted.

Highlights

Introduction to OpenGL as a graphics API and its role in accessing the GPU.

Explanation of API as a set of functions for specific tasks, with OpenGL focusing on graphics.

Clarification that OpenGL is not a library, engine, or framework but a specification.

Discussion on the misconception that OpenGL is open source and its actual proprietary nature.

Highlighting that GPU manufacturers implement OpenGL, leading to variations in implementation.

OpenGL's cross-platform capability and its implications for game development.

Personal opinion on the simplicity and learning curve of OpenGL compared to other APIs.

The distinction between legacy and modern OpenGL, with a focus on the latter in the series.

Importance of shaders in modern OpenGL and their role in GPU programming.

Plans for the series to cover modern OpenGL, including advanced topics like deferred rendering and PBR.

Emphasis on learning OpenGL for educational purposes and its application in personal projects.

The series will not focus on creating a game engine but rather understanding OpenGL itself.

Intent to cover both 2D and 3D graphics, including optimization techniques and rendering concepts.

Use of C++ for OpenGL code examples and the rationale behind choosing this language.

The decision to use Windows and Visual Studio for demonstrations due to industry standards.

Upcoming Patreon rewards related to the series and the encouragement for viewers to support the content.

Preview of the next episode, which will involve setting up a window and rendering a triangle using OpenGL.

Transcripts

play00:00

hey what's up guys my name is the Cherno

play00:01

and welcome to OpenGL finally doing an

play00:04

OpenGL series really excited for this

play00:06

this is something that I probably should

play00:07

have done years ago but here we are

play00:09

let's talk about OpenGL so in this video

play00:12

we're basically just going to cover what

play00:13

OpenGL actually is how we can use it

play00:15

what it can do for us what it isn't and

play00:17

also what this series is actually going

play00:19

to cover so first of all if you've heard

play00:21

of OpenGL but you're not sure what it is

play00:22

you're probably relating it to graphics

play00:24

and that's exactly what OpenGL is OpenGL

play00:26

is a graphics API now API stands for

play00:29

application programming interface and

play00:31

what it basically is is a bunch of

play00:33

functions that we can call to do certain

play00:35

things in this case since OpenGL is a

play00:37

graphics API it allows us to do things

play00:39

with graphics and specifically OpenGL

play00:41

allows us to actually access our GPU our

play00:44

graphics processing unit which is our

play00:46

graphics card and of course being called

play00:48

the graphics card it's pretty good at

play00:50

drawing graphics and so in order to

play00:52

actually utilize this massively powerful

play00:53

graphics processor that we have in

play00:55

either a computer or a device like a

play00:57

phone we need to actually use some kind

play01:00

of API to get access to that actual

play01:02

hardware and OpenGL is just one of many

play01:04

api's that actually allows us to access

play01:06

the graphics card and tell it what to do

play01:08

we have other ones as well such as

play01:09

direct3d Vulcan metal and there are a

play01:13

few others as well so in summary OpenGL

play01:15

allows us to control our graphics card

play01:17

to a certain extent let's clear up some

play01:19

common misconceptions that people seem

play01:21

to have about OpenGL first of all a lot

play01:23

of people call up until a library or an

play01:25

or an engine or something like that or a

play01:27

framework it's none of those things

play01:30

OpenGL by itself at its core is just a

play01:33

specification it's kind of like a C++

play01:36

specification in that regard it's

play01:39

actually it doesn't actually define any

play01:40

code or anything what it is is a

play01:42

specification that lists hey this

play01:45

function should exist it should take

play01:47

these parameters that should return this

play01:48

value it's just a specification of what

play01:51

you can do with the API there's no

play01:53

implementation there whatsoever which

play01:55

means that is definitely not a library

play01:57

because OpenGL itself there's no code

play01:59

for OpenGL it's just a spec right just

play02:02

the specification so with that in mind

play02:04

where do i download open

play02:06

that's another really common question

play02:08

and the answer is you don't really

play02:09

downloaded OpenGL itself is again just a

play02:12

specification so who actually implements

play02:15

it who actually writes the code that

play02:17

gets called when you call an OpenGL

play02:19

function and the answer to that is your

play02:21

GPU manufacturer so if you're using an

play02:24

NVIDIA GPU then the drivers for that GPU

play02:27

your Nvidia drivers are what actually

play02:29

contained the implementation of OpenGL

play02:32

and videos implementation of OpenGL and

play02:34

every graphics card manufacturer AMD

play02:37

Intel whatever they're gonna have their

play02:39

own implementations and of course Nvidia

play02:43

don't really have a meeting with AMD and

play02:45

decided yeah this is how we're gonna

play02:46

write our code that doesn't happen right

play02:48

so everyone's implementation of OpenGL

play02:51

is gonna be slightly different which is

play02:53

why in a lot of cases some things may

play02:56

work on nvidia drivers on an NVIDIA GPU

play02:58

but that same game might look a little

play03:00

bit different on an MD TV or maybe there

play03:03

are bugs or sub I that but anyway the

play03:05

point is that OpenGL is written by your

play03:08

GPU manufacturer which probably will

play03:11

lead on to the next common misconception

play03:12

about OpenGL it's open source where do

play03:15

people get this stuff I get that it has

play03:17

open in the name but it's not open

play03:19

source at all you cannot see the code

play03:21

for OpenGL because first of all is

play03:24

implemented by the GPU manufacturers

play03:25

they certainly don't release their

play03:27

driver source code some that dude there

play03:29

are of course open source

play03:30

implementations of OpenGL because if

play03:32

like I don't know if I create a graphics

play03:34

card and I wanted to support OpenGL I

play03:36

have to write a driver for it

play03:38

and I may choose to put that on github

play03:40

or whatever and have it be open source

play03:41

but the implementation that your

play03:44

computer is running probably if you're

play03:46

using like an Nvidia graphics card or an

play03:48

AMD or an Intel card you're not going to

play03:50

see the source code behind that

play03:51

implementation so OpenGL OpenGL can't

play03:54

really be open source first of all

play03:56

because it's a specification no no

play03:58

actual source code but second of all the

play04:01

implementation of OpenGL you're using is

play04:03

most probably not open source

play04:05

what OpenGL does offer which excites a

play04:08

lot of people and causes a lot of people

play04:10

unfortunately to say all OpenGL is so

play04:13

much better

play04:13

anything else is because it's kind of

play04:15

cross-platform so what you can do is you

play04:17

can write OpenGL code and that same code

play04:20

will run on Windows Mac Linux iOS

play04:24

Android that kind of stuff right and so

play04:27

people immediately start to think oh

play04:28

well OpenGL is superior to direct3d

play04:30

because it runs on all platforms no no

play04:35

don't stop saying that please

play04:37

I just realized with that last statement

play04:39

of mine I should probably say since this

play04:42

is the welcome video this series is kind

play04:45

of gonna be based on my opinion that's

play04:47

just I'm making these videos so I'm

play04:49

gonna give my opinion you can choose not

play04:50

to follow it I'm not in any way implying

play04:52

my opinion is fact I'm just saying that

play04:55

from my experience in the industry

play04:56

working on central technology for EA

play04:59

specifically game engine technology for

play05:01

EA and having dealt with many different

play05:04

graphics api's I'm not the biggest fan

play05:07

of OpenGL and the concept of the concept

play05:11

of because this API is cross-platform

play05:13

it's kind of you know at the best that

play05:16

that is making sense game mentions do

play05:19

not implement a single graphics API but

play05:21

that's not how they work if game engines

play05:23

a cross-platform that is they're not

play05:25

just made for an Xbox or something

play05:26

ordered they're not just made for

play05:27

Windows they will implement they have to

play05:30

implement multiple graphics api's

play05:31

because the fact of the matter is

play05:33

usually the graphics API that is made

play05:35

for that platform for example direct3d

play05:37

made for Windows by Microsoft it's gonna

play05:40

be superior to an API this kind of

play05:43

cross-platform now remember the people

play05:46

actually implementing the code are not

play05:47

Microsoft Microsoft specifically with

play05:50

directory they actually tend to work

play05:51

with GPU manufacturers to get better

play05:53

kind of code done and stuff like that

play05:56

but at the end of the day something like

play05:57

OpenGL its invidious responsibility to

play06:00

implement open jail for their drivers

play06:01

and they screw up its kind of on them

play06:03

but the fact that OpenGL is

play06:05

cross-platform therefore it's better

play06:06

than direct3d or better than metal metal

play06:09

is what Apple used for iOS and Mac

play06:11

that's that's that argument is really

play06:14

kind of

play06:15

doesn't make any sense because usually

play06:17

the thing that's native to the platform

play06:19

is going to be more powerful and better

play06:21

that is to say that OpenGL as an actual

play06:23

specification is actually really simple

play06:25

especially when you compare it to

play06:26

something more low-level like DirectX 12

play06:28

or direct3d 12 and Vulcan so in terms of

play06:32

the complexity of OpenGL I think open

play06:34

gels probably like with metal as well

play06:37

metal is a little bit lower level in

play06:38

OpenGL but not quiet in Vulcan I would

play06:41

say that OpenGL is probably the easiest

play06:43

API that you can learn right now so

play06:45

OpenGL is really definitely worth

play06:47

learning Vulcan which is another one of

play06:49

those cross-platform at the eyes it's

play06:51

still kind of fresh and raw and the

play06:54

drivers still need a bit more work just

play06:56

last week for example I've seen Vulcan

play06:58

restart Android devices because it you

play07:01

pulled something and it crash and it's

play07:03

you've all kinds of bit difficult to get

play07:05

into and I would only really advise you

play07:06

get into Vulcan at this point in time

play07:08

which is September 2017 if you really

play07:12

want to just have fun but all I play

play07:15

with it or you have to implement it for

play07:16

some reason but overall is I wouldn't

play07:20

really ship a game on Vulcan just yet if

play07:23

I can avoid it because something like

play07:25

OpenGL is gonna be way more stable

play07:26

anyway I'm kind of ranting I'm kind of

play07:28

if this is kind of getting derailed my

play07:30

point is that this area is gonna cover

play07:32

up in jail I still think OpenGL is the

play07:33

best graphics API you can use for

play07:35

learning because it's just so simple

play07:36

compared to the other ones it's still

play07:39

it's it's it's a really easy kind of

play07:41

simple one to learn and of course it

play07:43

also is cross-platform so if you're not

play07:44

a game studio if you don't have a team

play07:46

of people making a game engine and you

play07:48

can afford the resourcing for actually

play07:50

implementing you know directory for

play07:52

windows metal for app or whatever OpenGL

play07:55

or welcome for Android like if you kind

play07:57

of if you don't have that those

play07:58

resources available which most people

play08:00

watching this video but we don't then

play08:02

OpenGL is fantastic because it is

play08:03

cross-platform and it is going to it's

play08:05

simple as cross-platform it's going to

play08:07

by far be the easiest if you want to

play08:09

shape a game on multiple platforms so

play08:11

that's why we're letting OpenGL because

play08:13

I do like OpenGL

play08:14

like for kind of small personal projects

play08:18

but obviously if I was a triple ace to

play08:20

Europe working

play08:21

this probably be my last choice for a

play08:24

for an actual graphics API because the

play08:26

API first of all isn't that good DirectX

play08:29

11 my favorite graphics API in terms of

play08:31

API design is probably direct3d 11 and

play08:34

what ends up happening with OpenGL for a

play08:35

lot of people especially if they're

play08:37

writing a game engine and a proper

play08:38

graphics rendering engine is they'll

play08:40

actually tend to basically write a

play08:43

direct3d kind of wrapper over OpenGL so

play08:47

in other words they'll kind of end up

play08:48

writing a framework which calls OpenGL

play08:51

under the hood but on like the actual

play08:53

API of that framework will be very

play08:54

similar to direct3d because direct3d 11

play08:57

specifically is a really good way of

play09:00

creating a graphics API again my opinion

play09:03

but most people that I've talked to in

play09:06

the industry with this 100% agree so

play09:08

yeah so with that aside you now have

play09:10

some answers to some frequently asked

play09:12

questions OpenGL is implemented in your

play09:14

graphics drivers and it's just a

play09:15

specification for allowing us to control

play09:17

the graphics card now in this series

play09:20

specifically we are going to be dealing

play09:21

with modern OpenGL now modern OpenGL is

play09:24

something that you might have heard a

play09:26

lot about as well this kind of

play09:28

distinction between legacy OpenGL and

play09:30

modern OpenGL the reason that exists is

play09:32

because OpenGL was released in the 90s

play09:35

and back then it was very different

play09:37

toward before to what it was now back

play09:39

then

play09:39

GPUs one has programmable and is

play09:42

flexible I guess you couldn't control

play09:43

them anywhere near as much as you can

play09:45

now especially with these lower-level

play09:47

api's now people are ultimately giving

play09:49

us so much control or I should say

play09:50

manufacturers are giving so much control

play09:52

to the programmers and developers which

play09:55

of course is really good because we can

play09:57

optimize further for that but OpenGL

play10:00

right now is a lot more kind of like a

play10:02

circus a low-level law it gives you a

play10:03

lot more control than it did back then

play10:05

back then it was like a set of precess

play10:08

so in other words you basically draw a

play10:11

triangle and then you say I want

play10:13

lighting so how do you add lighting to

play10:15

the triangle you basically say lighting

play10:17

equals true you enable OpenGL lighting

play10:19

and then you busy you tell OpenGL I want

play10:21

my light to be here like it's it's

play10:24

really is like a set of presets it was

play10:26

like a set of presets - how do I get my

play10:28

graphics to work and because of that it

play10:30

was really

play10:30

use legacy OpenGL is really easy to use

play10:33

it's very the code is quite short and

play10:37

but unfortunately with that of course it

play10:39

doesn't give you as much control and we

play10:41

do want control because we want to

play10:43

implement some pretty crazy graphics

play10:45

things in this series so the biggest

play10:47

distinction between legacy OpenGL and

play10:49

modern OpenGL is shaders this term

play10:52

shader is something that you might have

play10:54

heard we probably would have heard if

play10:56

you were at all interested in graphics

play10:58

and it might kind of resemble the word

play11:00

shadow or light like some people can

play11:03

compare it to lighting or something

play11:05

forget that a shader is program it's a

play11:08

it's a it's code that runs on your GPU

play11:11

that's what a shader is it's a program

play11:14

that runs on your GPU so if we write

play11:16

code in C++ or Java or C sharp or

play11:19

whatever language it runs on our CPU

play11:21

right but since we're specifically

play11:24

dealing with graphics for a lot of the

play11:25

time we want to control exactly what the

play11:28

GPU does and and probably move a lot of

play11:30

our code from the CPU to the GPU because

play11:33

it's gonna run faster on the GPU so

play11:35

that's why shaders come in Cheddar's

play11:36

just allow us to write code on the GPU

play11:38

and we definitely want to be doing that

play11:40

in this series because if you want to

play11:42

work out some complex lighting

play11:43

algorithms for example you definitely

play11:45

want to be doing that on the GPU instead

play11:46

of on the CPU which you had to do in the

play11:48

past

play11:49

so programmable shaders is the biggest

play11:50

kind of difference between the two but

play11:52

there are also many other differences as

play11:53

well as cover in this series but just

play11:55

rest assured if you're looking for a

play11:56

modern OpenGL series this is we're gonna

play11:59

cover modern up you're gonna go as

play12:00

modern as we can

play12:01

the other important thing but I want to

play12:02

mention about this series is that we're

play12:04

not gonna be making a dimension we're

play12:06

not going to be making a graphics engine

play12:08

or a framework or a library or anything

play12:10

like that we're gonna be learning OpenGL

play12:12

I'm actually going to have another

play12:14

series which I hope to start in a few

play12:15

weeks which is going to be how to make a

play12:17

game engine and in that series we are

play12:19

going to make a full-on game engine the

play12:21

graphics engine and all of that which

play12:22

will implement OpenGL as one of its

play12:24

rendering api's so if you want to see

play12:26

OpenGL in an in an actual engine a game

play12:28

engine and how that works then that

play12:30

series is gonna be for you but this

play12:32

series we're actually gonna learn how

play12:34

OpenGL works so that we can write that

play12:36

rendering engine

play12:37

and that game mentioned with opengl and

play12:40

so because of that in this series we're

play12:42

not going to be wasting time writing

play12:44

like a material system for example we're

play12:46

just going to focus on the raw OpenGL

play12:48

code so that I can show you how OpenGL

play12:51

actually works and how you can achieve

play12:52

what you want and then it's going to be

play12:54

up to you to actually implement that in

play12:56

your engine or if you don't know how to

play12:57

do that and of course my game engine

play12:59

series which will come shortly in the

play13:00

future will cover all that but this

play13:02

series specifically we're going to be

play13:04

focusing on OpenGL which is why in our

play13:06

main source file which will have we're

play13:08

going to be writing OpenGL code we're

play13:11

gonna abstract that away or anything

play13:12

like that this is gonna be some roar GL

play13:14

code we're probably are gonna write have

play13:16

to write some utility classes like for

play13:17

mass and also like loading shaders or

play13:20

textures and stuff like that because

play13:22

there's a little boilerplate code that

play13:23

can kind of get repeated a lot but when

play13:25

we actually come time to when when it

play13:27

actually comes time to you know let's

play13:29

render something on the screen that's

play13:31

going to just be raw up in jail code

play13:32

we're not going to abstract that away at

play13:34

all we are going to be writing OpenGL in

play13:36

C++ because in my opinion that's the

play13:38

best language for the job

play13:40

it is going to be cross-platform I'm

play13:42

going to try my best to ensure that it

play13:44

is cross-platform

play13:45

so that any said that anyone can follow

play13:47

along on Mac and Linux as well as

play13:48

Windows we are going to be using Windows

play13:49

and Visual Studio because that is what

play13:51

pretty much everyone in the industry

play13:53

uses that's what I'm used to and that's

play13:55

what I personally believe is the best

play13:56

tool set the best tool chain that you

play13:58

can actually use in terms of actual

play14:00

topics that we're going to be covering

play14:01

for OpenGL we're going to do 2d graphics

play14:04

and we're going to do really fast 2d

play14:06

graphics and learn about batching and

play14:07

all that stuff to actually write a very

play14:10

very fast 2d renderer we're also going

play14:12

to talk about 3d of course and

play14:13

everything to do with that and influence

play14:15

some cool things we're gonna implant

play14:17

lighting of course and shadows and

play14:19

deferred rendering and physically based

play14:21

rendering and just any old

play14:23

post-processing stuff like bloom and

play14:25

sprays based effects great space ambient

play14:27

occlusion screen space reflections just

play14:30

we're going to basically do everything

play14:32

that you guys can think of and leave in

play14:33

the comments on

play14:34

happy to implement pretty much any of

play14:36

that I've done it before and it should

play14:38

be really exciting to kind of get a set

play14:40

of examples together which you guys can

play14:42

explore and hopefully implement in your

play14:44

own engines or in your own games or

play14:45

anything like that

play14:46

so I'm really excited for this series

play14:48

because graphics programming is one of

play14:49

my favorite areas of programming which

play14:51

is remember in this series we're not

play14:52

gonna be focusing on how to make a game

play14:53

engine we're just going to be focusing

play14:55

on how can I achieve this in OpenGL

play14:57

OpenGL is just one of the many api's

play14:59

that exists for graphics programming and

play15:01

this series is going to be specific

play15:03

specifically about how OpenGL actually

play15:06

works if you guys are as excited as I am

play15:08

then hit the like button you can also

play15:10

support this series and all of my videos

play15:12

by going to patreon.com 4/2 Cherno

play15:14

that's going to help ensure that these

play15:16

videos get get released more frequently

play15:18

and that I have more time to make them

play15:20

there are going to be some pretty cool

play15:21

rewards relating to this series coming

play15:23

soon on patreon so definitely it

play15:24

definitely keep an eye out for that in

play15:26

terms of how often these videos are

play15:27

going to come out at least once a week

play15:29

but I'm going to try especially in the

play15:31

beginning I'm going to try and make them

play15:33

a lot more frequently next episode we're

play15:35

going to actually start writing some

play15:36

code and specifically we're going to be

play15:38

setting up a window and actually getting

play15:40

a triangle onto this frame hopefully so

play15:43

I will see you guys in the next video

play15:45

goodbye

play15:46

[Music]

play16:01

you

Rate This

5.0 / 5 (0 votes)

Связанные теги
OpenGLGraphics APIGPUCross-PlatformGame DevelopmentAPI DesignShaders2D Graphics3D RenderingProgramming Tutorial
Вам нужно краткое изложение на английском?