MENU

Fun & Interesting

Perspective Projection - Part 1 // OpenGL Tutorial #11

OGLDEV 34,159 lượt xem 3 years ago
Video Not Working? Fix It Now

AEJuice Free Plugins https://aejuice.com/free-plugins/?ref=OGLDEV
AEJuice I Want It All Bundle https://aejuice.com/product/i-want-it-all-bundle/?ref=OGLDEV
AEJuice YouTube Channel https://www.youtube.com/channel/UCM_e9POdHMlb7vYxHvQ7TqA?sub_confirmation=1

In this video I'm going to explain and implement perspective projection in OpenGL. This transformation is core in making your 3D game actually look like it has a third dimension. It makes objects that are further away from the camera appear smaller while closer objects appear larger. This video is part one and deals mainly with the projection of the XY coordinates. In the next video we will handle the Z component and the aspect ratio.

Back face culling is explained in https://youtu.be/OErPXo2UqvY

Make sure to watch all the previous tutorials in the "OpenGL For Beginners" playlist at https://youtube.com/playlist?list=PLA0dXqQjCx0S04ntJKUftl6OaOgsiwHjA

Please visit https://ogldev.org to see more of my tutorials on modern OpenGL.

** Link to source: https://github.com/emeiri/ogldev/blob/master/tutorial11_youtube
If you want to get the same version that was used in the video checkout the tag TUT_11_PERS_PROJ_1.

** OpenGL 4.6 specification: https://www.khronos.org/registry/OpenGL/specs/gl/glspec46.core.pdf

🔥 I'm using the following books as background information for my tutorials and I highly recommend them for learning more about OpenGL and Vulkan.
These are affiliate links so if you use them to buy the books the price is the same for you and I will get a small commision (thank-you!).

📖 OpenGL 4 Shading Language Cookbook - Third Edition: Build high-quality, real-time 3D graphics with OpenGL 4.6, GLSL 4.6 and C++17 3rd ed. Edition: https://amzn.to/3XO2J3S

📖 3D Graphics Rendering Cookbook: A comprehensive guide to exploring rendering algorithms in modern OpenGL and Vulkan: https://amzn.to/3MMJQbf
(Watch my short video review on this book: https://youtube.com/shorts/lrRgV4Tr6D0?feature=share)

📖 Vulkan Programming Guide: The Official Guide to Learning Vulkan: https://amzn.to/3XwBjhr
(Watch my short video review on this book: https://youtube.com/shorts/6VrlBu-RTi8?feature=share)

Timecodes:
0:00 Intro
2:14 The View Frustum
5:47 View onto the YZ plane
6:14 Projecting on the near clip plane
6:42 The field of view
8:27 Calculating the projected point (Y component)
10:37 Calculating the projected point (X component)
11:33 How to implement?
12:07 The projection Matrix
13:09 Perspective Division
14:43 Copying the Z into W
15:38 Start of code review
15:55 How I got the cube mesh
17:10 Handling face culling
18:32 Transformation matrices
20:02 Run without projection
20:20 Implement the perspective projection matrix
21:45 Run with projection
23:40 Conclusion

Feel free to comment below.

Email: ogldev1@gmail.com
Facebook: https://www.facebook.com/Ogldev-188319114585587
GIthub: https://github.com/emeiri/ogldev.git
Twitter: @ogldev
One time donations (Paypal): https://ogldev.org/donate.html
Patreon: https://www.patreon.com/ogldev

My gear (Amazon affiliate links):
Camera - Canon EOS M50: https://amzn.to/3duVIOh
Camera mic - Rode Videomic: https://amzn.to/3dsGVDs
Desktop mic - Rode NT-USB-Mini: https://amzn.to/3giMoif

Credits:
Music: "Cute" from https://bensound.com
View Frustum image: https://upload.wikimedia.org/wikipedia/commons/0/02/ViewFrustum.svg (MithrandirMage, CC BY-SA 3.0 https://creativecommons.org/licenses/by-sa/3.0, via Wikimedia Commons)

Enjoy,

Etay Meiri

#opengl #ogldev #opengtutorials

Comment