{"id":44664276,"url":"https://github.com/ifilot/opengl-cpp-course","last_synced_at":"2026-02-15T00:14:55.325Z","repository":{"id":149551115,"uuid":"142582830","full_name":"ifilot/opengl-cpp-course","owner":"ifilot","description":"Course to learn how to write OpenGL C++ programs","archived":false,"fork":false,"pushed_at":"2026-02-06T18:00:47.000Z","size":6864,"stargazers_count":32,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-02-07T01:45:55.279Z","etag":null,"topics":["course","cpp","glsl","graphics-programming","opengl","windows"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"afl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ifilot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-07-27T13:49:15.000Z","updated_at":"2026-02-06T18:01:01.000Z","dependencies_parsed_at":"2024-02-01T09:41:58.738Z","dependency_job_id":null,"html_url":"https://github.com/ifilot/opengl-cpp-course","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ifilot/opengl-cpp-course","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ifilot%2Fopengl-cpp-course","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ifilot%2Fopengl-cpp-course/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ifilot%2Fopengl-cpp-course/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ifilot%2Fopengl-cpp-course/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ifilot","download_url":"https://codeload.github.com/ifilot/opengl-cpp-course/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ifilot%2Fopengl-cpp-course/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29461560,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T22:42:09.113Z","status":"ssl_error","status_checked_at":"2026-02-14T22:42:05.053Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["course","cpp","glsl","graphics-programming","opengl","windows"],"created_at":"2026-02-15T00:14:54.778Z","updated_at":"2026-02-15T00:14:55.319Z","avatar_url":"https://github.com/ifilot.png","language":"C++","readme":"# OpenGL C++ Course\n\n[![windows-build](https://github.com/ifilot/opengl-cpp-course/actions/workflows/windows.yml/badge.svg)](https://github.com/ifilot/opengl-cpp-course/actions/workflows/windows.yml)\n[![linux-build](https://github.com/ifilot/opengl-cpp-course/actions/workflows/linux.yml/badge.svg)](https://github.com/ifilot/opengl-cpp-course/actions/workflows/linux.yml)\n\n![Screenshot of rotating cube](lesson02/images/rotating_cube.jpg)\n\n## Purpose and expectations\nThis repository contains the source code for the OpenGL C++ course. The course\nteaches students how to effectively use C++ in conjunction with OpenGL to build\ngraphical programs. The course is made in a concise manner and I refer often to\nexternal resources which I expect the student to read (or at least glance\nthrough). The learning strategy employed here is \"Learning by example\" and\n\"Learning by doing\". This means that example code is provided and the student is\ngiven the opportunity to practice with the material in the form of exercises.\n\nWe assume that the student is relatively comfortable reading C++ code and has\nsome previous experience with it. The exercises are constructed in such a way\nthat the student only has to change a few lines of code. Furthermore, we expect\nthat the student is familiar with matrix-vector multiplication and has some\nunderstanding of matrix mathematics. Finally, we expect that the student is a\nbit familiar using the command line.\n\nThis course focuses on running OpenGL in a Windows environment using MinGW-w64,\nalthough it should also run under Linux (I have tested it for Linux Ubuntu). If\nyou want to compile the programs on Linux, please read\n[below](#compilation-instructions-for-linux) as the instructions for CMake\ndiffer slightly. OpenGL and the libraries we are using are cross-platform and\nthus work on Windows, Mac as well as Linux.\n\nFeedback on this course is always much appreciated if provided in a constructive\nmanner. Feel free to use the Issues system on Github for this purpose.\n\n## Lesson overview\n1. [Compiling and running an OpenGL program](lesson01/README.md)\n2. [Model, View, Perspective](lesson02/README.md)\n3. [Creating a Shader class](lesson03/README.md)\n4. [Models](lesson04/README.md)\n5. [Lighting](lesson05/README.md)\n6. [Textures](lesson06/README.md)\n7. [Anaglyph](lesson07/README.md)\n\n## Preparation of compilation environment\n\nIn order to compile the software under Windows, install the the MinGW-w64\ntoolchain via [MSYS2](https://www.msys2.org/). Next, open **MSYS2 MinGW 64-bit**\nand install using `pacman` the dependencies using the following instruction\n\n```bash\npacman -S --needed \\\n  mingw-w64-x86_64-toolchain \\\n  mingw-w64-x86_64-cmake \\\n  mingw-w64-x86_64-glew \\\n  mingw-w64-x86_64-glfw \\\n  mingw-w64-x86_64-glm\n```\n\n## Compilation instructions for Windows (MinGW-w64)\nOpen the **MSYS2 MinGW 64-bit** shell and go to the repository root folder.\n\nCreate a build directory and execute CMake; note that you need to change `XX` to the lesson of interest.\n\n```\nmkdir build\ncmake -S lessonXX -B build/lessonXX -G \"MinGW Makefiles\"\ncmake --build build/lessonXX\n```\n\n## Compilation instructions for Linux\nOpen a terminal, go to the root folder of the repository and use the following commands.\n\n```\nmkdir build\ncmake -S lessonXX -B build/lessonXX\ncmake --build build/lessonXX -j5\n```\n\n## Troubleshooting\n\n### Framerate is very low\nIf you are working with Intel Integrated Graphics, open the Intel (U)HD Graphics Control Panel. Go to `3D` and add the executable to the `Select Application` window using the `Browse` button. Then under `Vertical Sync`, select `Use Driver Settings`.\n\nAlternatively, try disabling the following line:\n\n```\n// set swap interval\nglfwSwapInterval(1);\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fifilot%2Fopengl-cpp-course","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fifilot%2Fopengl-cpp-course","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fifilot%2Fopengl-cpp-course/lists"}