{"id":28917952,"url":"https://github.com/hammackj/learn_opengl_rust","last_synced_at":"2026-05-18T00:33:32.538Z","repository":{"id":293702945,"uuid":"984878626","full_name":"hammackj/learn_opengl_rust","owner":"hammackj","description":"My Port of LearnOpenGL.com to Rust for Personal Use","archived":false,"fork":false,"pushed_at":"2025-05-21T20:09:35.000Z","size":28403,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-21T04:00:06.454Z","etag":null,"topics":["opengl","opengl-tutorial","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hammackj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-05-16T16:58:46.000Z","updated_at":"2025-05-21T20:09:38.000Z","dependencies_parsed_at":"2025-05-22T04:46:10.349Z","dependency_job_id":null,"html_url":"https://github.com/hammackj/learn_opengl_rust","commit_stats":null,"previous_names":["hammackj/learn_opengl_rust"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hammackj/learn_opengl_rust","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hammackj%2Flearn_opengl_rust","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hammackj%2Flearn_opengl_rust/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hammackj%2Flearn_opengl_rust/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hammackj%2Flearn_opengl_rust/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hammackj","download_url":"https://codeload.github.com/hammackj/learn_opengl_rust/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hammackj%2Flearn_opengl_rust/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33160488,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-17T22:39:12.733Z","status":"ssl_error","status_checked_at":"2026-05-17T22:39:10.741Z","response_time":107,"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":["opengl","opengl-tutorial","rust"],"created_at":"2025-06-22T01:03:01.082Z","updated_at":"2026-05-18T00:33:27.528Z","avatar_url":"https://github.com/hammackj.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Port of Learn Opengl to Rust\n\nThis code is mostly for me to do the learnopengl.com lessons and port them to rust for my own use. Be advised stuff might not work or be wrong.\n\nFor a more complete Rust version see this repo https://github.com/srcres258/learnopengl-rust as it is recommended by LearnOpenGL.com\n\nAs I am pretty much porting the C++ code to Rust. The license is the same as the C++ code:\n\n\"All code samples, unless explicitly stated otherwise, are licensed under the terms of the CC BY-NC 4.0 license as published by Creative Commons, either version 4 of the License, or (at your option) any later version.\n\nSee https://learnopengl.com/About for more information.'\n\nEach program is specifcially independant of any libraries or other chapters to make them as standalone as possible.\n\n\n# To Build\n    cargo build\n\n# Getting Started\n\n## Hello Window\n\u003cimg src=\"/screenshots/01_hello_window.png\" width=\"50%\"\u003e\n\n    cargo run --bin hello_window\n\n## Hello Triangle\n\u003cimg src=\"/screenshots/02_hello_triangle.png\" width=\"50%\"\u003e\n\n    cargo run --bin hello_triangle\n\n## Hello Triangle Indexed\n\u003cimg src=\"/screenshots/03_hello_triangle_indexed.png\" width=\"50%\"\u003e\n\u003cimg src=\"/screenshots/03_hello_triangle_indexed_wireframe.png\" width=\"50%\"\u003e\n\n    cargo run --bin hello_triangle_indexed\n\n## Hello Triangle - Exercise 1\n\u003cimg src=\"/screenshots/04_hello_triangle_exercise_01.png\" width=\"50%\"\u003e\n\n    cargo run --bin hello_triangle_exercise_01\n\n## Hello Triangle - Exercise 2\n\u003cimg src=\"/screenshots/05_hello_triangle_exercise_02.png\" width=\"50%\"\u003e\n\n    cargo run --bin hello_triangle_exercise_02\n\n## Hello Triangle - Exercise 3\n\u003cimg src=\"/screenshots/06_hello_triangle_exercise_03.png\" width=\"50%\"\u003e\n\n    cargo run --bin hello_triangle_exercise_03\n\n## Shaders - Uniforms\n\u003cimg src=\"/screenshots/07_shaders.png\" width=\"50%\"\u003e\n\n    cargo run --bin shaders\n\n## Shaders - Shader attributes\n\u003cimg src=\"/screenshots/08_shaders_attributes.png\" width=\"50%\"\u003e\n\n    cargo run --bin shaders    \n\n## Shaders - Shader Object\n\u003cimg src=\"/screenshots/09_shaders_object.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/09_shaders_object\n    cargo run\n\n## Shaders - Exercise 1\n\u003cimg src=\"/screenshots/10_shaders_exercise_01.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/10_shaders_exercise_01\n    cargo run\n\n## Shaders - Exercise 2\n\u003cimg src=\"/screenshots/11_shaders_exercise_02.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/11_shaders_exercise_02\n    cargo run\n\n## Shaders - Exercise 3\n\u003cimg src=\"/screenshots/12_shaders_exercise_03.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/12_shaders_exercise_03\n    cargo run    \n\n## Textures\n\u003cimg src=\"/screenshots/13_textures.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/13_textures\n    cargo run    \n\n## Textures Units\n\u003cimg src=\"/screenshots/14_textures_units.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/14_textures_units\n    cargo run  \n\n## Textures Exercise 01\n\u003cimg src=\"/screenshots/15_textures_exercise_01.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/15_textures_exercise_01\n    cargo run     \n\n## Textures Exercise 02\n\u003cimg src=\"/screenshots/16_textures_exercise_02.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/16_textures_exercise_02\n    cargo run            \n\n## Textures Exercise 03\n\u003cimg src=\"/screenshots/17_textures_exercise_03.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/16_textures_exercise_03\n    cargo run  \n\n## Textures Exercise 04\n\u003cimg src=\"/screenshots/18_textures_exercise_04.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/18_textures_exercise_04\n    cargo run  \n\n## Transforms\n\u003cimg src=\"/screenshots/19_transformations.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/19_transformations\n    cargo run \n\n## Transforms Exercise 01\n\u003cimg src=\"/screenshots/20_transformations_exercise_01.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/20_transformations_exercise_01\n    cargo run       \n\n## Transforms Exercise 02\n\u003cimg src=\"/screenshots/21_transformations_exercise_02.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/21_transformations_exercise_02\n    cargo run   \n\n## Coords\n\u003cimg src=\"/screenshots/22_coords.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/22_coords\n    cargo run       \n\n## Coords Depth\n\u003cimg src=\"/screenshots/23_coords_depth.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/23_coords_depth\n    cargo run     \n\n## Coords More Cubes\n\u003cimg src=\"/screenshots/24_coords_more_cubes.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/24_coords_more_cubes\n    cargo run \n\n## Coords More Cubes Exercise 03\n\u003cimg src=\"/screenshots/25_coords_exercise_03.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/25_coords_exercise_03\n    cargo run \n\n## Camera\n\u003cimg src=\"/screenshots/26_camera.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/26_camera\n    cargo run \n\n## Camera - Walk Around\n\u003cimg src=\"/screenshots/27_camera_walk_around.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/27_camera_walk_around\n    cargo run \n\n## Camera - Mouse\n\u003cimg src=\"/screenshots/28_camera_mouse.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/28_camera_mouse\n    cargo run \n\n## Camera - Object\n\u003cimg src=\"/screenshots/29_camera_object.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/29_camera_object\n    cargo run \n\n## Light - Colors\n\u003cimg src=\"/screenshots/30_light_colors.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/30_light_colors\n    cargo run \n\n## Light - Basic\n\u003cimg src=\"/screenshots/31_light_basic.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/31_light_basic\n    cargo run \n\n## Light - Specular\n\u003cimg src=\"/screenshots/32_light_specular.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/32_light_specular\n    cargo run \n\n## Light - Exercise 01\n\u003cimg src=\"/screenshots/33_light_exercise_01.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/33_light_exercise_01\n    cargo run \n\n## Light - Exercise 03\n\u003cimg src=\"/screenshots/35_light_exercise_03.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/35_light_exercise_03\n    cargo run \n\n## Light - Exercise 04\n\u003cimg src=\"/screenshots/36_light_exercise_04.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/36_light_exercise_04\n    cargo run \n\n## Material\n\u003cimg src=\"/screenshots/37_materials.png\" width=\"50%\"\u003e\nThis example uses a build script to copy shaders/textures to the folder so you have to run it in place.\n\n    cd learn_opengl/01_getting_started/37_materials\n    cargo run ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhammackj%2Flearn_opengl_rust","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhammackj%2Flearn_opengl_rust","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhammackj%2Flearn_opengl_rust/lists"}