Practical OpenGL and GLSL shaders fundamentals with C++

بواسطة: Udemy

Overview

Master the OpenGL and GLSL shading language - by writing code! Illustrated theory and practice (from basics to advanced)

What you'll learn:
  • Learn OpenGL and GLSL
  • Explore the modern rendering pipeline and shaders
  • Feed the vertex data - to buffers (VBO) and setup the buffer formats
  • Play with Shaders and GLSL
  • Make fun procedural computer graphics
  • Learn 3D transformations: rotation, scale and perspective projection
  • Load and draw textures (sprites)
  • Render the 3D geometry

Welcome to the OpenGL, GLSL and computer graphics course!

It is practical and illustrated program, designed to give you a visual intuition and practical skills to program computer graphics using OpenGL, GLSL and C ++

It is raw concentrated squeeze of OpenGL and GLSL knowledge (no "water"!no long talks that make you fall asleep)

The course is designed to start from fundamentals - and move to advanced topics like shaders, matrices, transformations, GLSL language, raster effects, texturing and shading.

In fact, the course is very easy to master. Because it is practical, visually illustrated and has code samples and live coding sessions.

It's created to help you develop the visual intuition about 3D programming models (so I developed some beautiful illustrations and visualizations - just to show you how things work "under the hood")

It will help you to build the proper mental models, patterns, and coding skills - to grasp the underlying concepts and internal elegancy of OpenGL machinery, as well as 3D math (because they're tricky)

There are live coding sessions and you get the full access to the source code

The course covers all important topics of modern OpenGL, such as:

- geometry, and buffers, VBOs and VAOs

- transformations and matrices, matrix hierarchy

- shaders and GLSL

- procedural art (and GLSL shaders-generated images)

- texturing

So feel free to explore it and I hope you'll enjoy it just as I did during its creation

Taught by

Serhii K

Practical OpenGL and GLSL shaders fundamentals with C++
الذهاب الي الدورة

Practical OpenGL and GLSL shaders fundamentals with C++

بواسطة: Udemy

  • Udemy
  • مدفوعة
  • الإنجليزية
  • متاح شهادة
  • متاح في أي وقت
  • intermediate
  • English
8.1.2PHP Version768msRequest Duration2MBMemory UsageGET ar/الدورات/{slug}Route
    • Booting (479ms)
    • Application (286ms)
    • 1 x Booting (62.45%)
      479.31ms
      1 x Application (37.3%)
      286.29ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET ar/الدورات/{slug}
      middleware
      web, localize:ar
      controller
      App\Http\Controllers\CourseController@show
      as
      ar.courses.show
      namespace
      prefix
      /ar
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      6 statements were executed15.97ms
      • select * from `courses` where `slug_ar` = 'practical-opengl-and-glsl-shaders-fundamentals-with-c++' limit 1
        14.43ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. practical-opengl-and-glsl-shaders-fundamentals-with-c++
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-07-27 03:08:25' where `id` = 4588
        650μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-07-27 03:08:25
        • 1. 4588
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (85)
        210μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        190μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (51) and `providers`.`deleted_at` is null
        210μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 4579 limit 1
        280μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 4579
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        UfdQKLDPm9O2MZAyWEVX67evK1hvPl3cZO4HHPWD
        locale
        ar
        _previous
        array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/practi...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/practical-opengl-and-glsl-shaders-fundamentals-with-c++
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "216.73.216.230" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.216.230" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "cf-ray" => array:1 [ 0 => "9658ee9e9805ab8a-YYZ" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "priority" => array:1 [ 0 => "u=0, i" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "216.73.216.230" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.216.230" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "9658ee9e9805ab8a-YYZ" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "51186" "REMOTE_ADDR" => "172.69.130.222" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/practical-opengl-and-glsl-shaders-fundamentals-with-c++" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1753585704.9678 "REQUEST_TIME" => 1753585704 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Sun, 27 Jul 2025 03:08:25 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6Ik5BbnBCbGNHS2U5N1drcU1idU56Vnc9PSIsInZhbHVlIjoiLzhpNmZrZGJVN0VFWVFITWFPQ3lNdnR4NDluR0V6bGZHb2xvS0hWUkFoK3dsZUtwa09laHYwYVNudUtnL2M1OURld1pZbUZaR056a2JzanhaMUJEQ2JsamE2azRibXB0ZTNrbElnSkw5VlZIcWJqWnJLUEdFTi9aV0tEMlRoaEgiLCJtYWMiOiJkNmVlMTNkNTE2ZjAzYzYyYTU1Y2FjNjk3NDg2OGRmZDAyMzAxZjRjZDgyNjhhMDcwN2VmYmYxNDgxMTEzZGYxIiwidGFnIjoiIn0%3D; expires=Sun, 27 Jul 2025 05:08:25 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6Ik5BbnBCbGNHS2U5N1drcU1idU56Vnc9PSIsInZhbHVlIjoiLzhpNmZrZGJVN0VFWVFITWFPQ3lNdnR4NDluR0V6bGZHb2xvS0hWUkFoK3dsZUtwa09laHYwYVNudUtnL2M1OURld1pZb" 1 => "laravel_session=eyJpdiI6Im9ZZjAyL1VXbmV3WmFKWXJKZ2lFamc9PSIsInZhbHVlIjoiRWxTYUFRaElOSk1JcS9ocHo5dUVpeVBHdUFyclRwRkEyK3E0dzJieWUyU1RvZGhvUGp5Rm5saURYbzJQc0ExZG81ais1UnVkMS9jNGU2Q09XYTV1UFd4Nms0M1plRzhFWFZZNTUxZHRLYTdDa2pyKzFCMmVkUUFRRG5najhSb0giLCJtYWMiOiJkZTZjZjM5YzE1MDgwM2VhOTdjOTI4YzlmOGNiMzE1YTQzZWQ2NmZjYmFiMWUxZDYwOTNkMjVmYmMyODMyOWVlIiwidGFnIjoiIn0%3D; expires=Sun, 27 Jul 2025 05:08:25 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6Im9ZZjAyL1VXbmV3WmFKWXJKZ2lFamc9PSIsInZhbHVlIjoiRWxTYUFRaElOSk1JcS9ocHo5dUVpeVBHdUFyclRwRkEyK3E0dzJieWUyU1RvZGhvUGp5Rm5saURYbzJQc0ExZG81" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6Ik5BbnBCbGNHS2U5N1drcU1idU56Vnc9PSIsInZhbHVlIjoiLzhpNmZrZGJVN0VFWVFITWFPQ3lNdnR4NDluR0V6bGZHb2xvS0hWUkFoK3dsZUtwa09laHYwYVNudUtnL2M1OURld1pZbUZaR056a2JzanhaMUJEQ2JsamE2azRibXB0ZTNrbElnSkw5VlZIcWJqWnJLUEdFTi9aV0tEMlRoaEgiLCJtYWMiOiJkNmVlMTNkNTE2ZjAzYzYyYTU1Y2FjNjk3NDg2OGRmZDAyMzAxZjRjZDgyNjhhMDcwN2VmYmYxNDgxMTEzZGYxIiwidGFnIjoiIn0%3D; expires=Sun, 27-Jul-2025 05:08:25 GMT; path=/XSRF-TOKEN=eyJpdiI6Ik5BbnBCbGNHS2U5N1drcU1idU56Vnc9PSIsInZhbHVlIjoiLzhpNmZrZGJVN0VFWVFITWFPQ3lNdnR4NDluR0V6bGZHb2xvS0hWUkFoK3dsZUtwa09laHYwYVNudUtnL2M1OURld1pZb" 1 => "laravel_session=eyJpdiI6Im9ZZjAyL1VXbmV3WmFKWXJKZ2lFamc9PSIsInZhbHVlIjoiRWxTYUFRaElOSk1JcS9ocHo5dUVpeVBHdUFyclRwRkEyK3E0dzJieWUyU1RvZGhvUGp5Rm5saURYbzJQc0ExZG81ais1UnVkMS9jNGU2Q09XYTV1UFd4Nms0M1plRzhFWFZZNTUxZHRLYTdDa2pyKzFCMmVkUUFRRG5najhSb0giLCJtYWMiOiJkZTZjZjM5YzE1MDgwM2VhOTdjOTI4YzlmOGNiMzE1YTQzZWQ2NmZjYmFiMWUxZDYwOTNkMjVmYmMyODMyOWVlIiwidGFnIjoiIn0%3D; expires=Sun, 27-Jul-2025 05:08:25 GMT; path=/; httponlylaravel_session=eyJpdiI6Im9ZZjAyL1VXbmV3WmFKWXJKZ2lFamc9PSIsInZhbHVlIjoiRWxTYUFRaElOSk1JcS9ocHo5dUVpeVBHdUFyclRwRkEyK3E0dzJieWUyU1RvZGhvUGp5Rm5saURYbzJQc0ExZG81" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "UfdQKLDPm9O2MZAyWEVX67evK1hvPl3cZO4HHPWD" "locale" => "ar" "_previous" => array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/practical-opengl-and-glsl-shaders-fundamentals-with-c++" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]