{"id":15937934,"url":"https://github.com/xilinjia/python3-pyopengl-tutorial","last_synced_at":"2026-05-03T07:32:48.078Z","repository":{"id":119519548,"uuid":"576309276","full_name":"XilinJia/Python3-PyOpenGL-Tutorial","owner":"XilinJia","description":"A 10-stage tutorial on developing OpenGL (PyOpenGL) in Python 3","archived":false,"fork":false,"pushed_at":"2022-12-09T14:33:40.000Z","size":17703,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-06T22:35:14.782Z","etag":null,"topics":["opengl","opengl-tutorial","opengl46","pyopengl","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","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/XilinJia.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}},"created_at":"2022-12-09T14:18:24.000Z","updated_at":"2024-05-29T03:27:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"a4f83ba4-9077-4c82-9d40-85d0d0e96ec5","html_url":"https://github.com/XilinJia/Python3-PyOpenGL-Tutorial","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XilinJia%2FPython3-PyOpenGL-Tutorial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XilinJia%2FPython3-PyOpenGL-Tutorial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XilinJia%2FPython3-PyOpenGL-Tutorial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XilinJia%2FPython3-PyOpenGL-Tutorial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/XilinJia","download_url":"https://codeload.github.com/XilinJia/Python3-PyOpenGL-Tutorial/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XilinJia%2FPython3-PyOpenGL-Tutorial/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259204773,"owners_count":22821154,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","opengl46","pyopengl","python3"],"created_at":"2024-10-07T05:20:22.804Z","updated_at":"2026-05-03T07:32:43.058Z","avatar_url":"https://github.com/XilinJia.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Python3 PyOpenGL tutorial\n\n### This is updated to Python 3.10.  Tested on Ubuntu 22.04 with OpenGL 4.6.\n\nUpdated from [this Python2 project](https://github.com/jcteng/python-opengl-tutorial)\n\nImplemented in Python based on the original C++ tutorial from [here](http://www.opengl-tutorial.org/).  You also can find C implementation [here](https://github.com/opengl-tutorials/ogl)\n\n[中文说明可以看这里](cn_readme.md)  \n\n## table of content\n0.  tu_00_glfw_window_sample : GLFW Version Colored cube.  \noriginal tutorial =\u003e http://www.opengl-tutorial.org/beginners-tutorials/tutorial-4-a-colored-cube/  \n\n![PyOpenGL](doc/screenshots/tu00.png)  \n\n1.  tu_01_color_cube : GLUT Version Colored cube.  \noriginal tutorial =\u003e http://www.opengl-tutorial.org/beginners-tutorials/tutorial-4-a-colored-cube/\n\n![PyOpenGL](doc/screenshots/tu01.png)  \n\n2.  tu_02_texture_without_normal: basic rendering with texture.  \noriginal tutorial =\u003e http://www.opengl-tutorial.org/beginners-tutorials/tutorial-5-a-textured-cube/\n\n![PyOpenGL](doc/screenshots/tu02.png)  \n\n3. tu_03_loadobj : load mesh information from wavefont obj file:  \noriginal tutorial =\u003e http://www.opengl-tutorial.org/beginners-tutorials/tutorial-7-model-loading/\n![PyOpenGL](doc/screenshots/tu03.png)  \n\n4. tu_04_vbo : use VBO   \noriginal tutorial =\u003e http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-9-vbo-indexing/  \n\n![PyOpenGL](doc/screenshots/tu04.png)  \n\n5. tu_05_input : add viewport control with keyboard and mouse  \noriginal tutorial =\u003e http://www.opengl-tutorial.org/beginners-tutorials/tutorial-6-keyboard-and-mouse/\n![PyOpenGL](doc/screenshots/tu05.png)  \n\n6. tu_06_multobjs: draw multi mesh objects in same window  \n![PyOpenGL](doc/screenshots/tu06.png)  \n\n7. tu_07_basic_shading : basic shading with light and normals  \noriginal tutorial =\u003e http://www.opengl-tutorial.org/beginners-tutorials/tutorial-8-basic-shading/\n![PyOpenGL](doc/screenshots/tu07.png)  \n\n8. tu_08_transparency : transparency  \noriginal tutorial =\u003e http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-10-transparency/ \n![PyOpenGL](doc/screenshots/tu08.png)  \n\n9. tu_09_draw_text: Draw text in openGL  \noriginal tutorial =\u003e http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-11-2d-text/  \n![PyOpenGL](doc/screenshots/tu09.png)  \n\n10. tu_10_normal_mapping : Normal Mapping  \noriginal tutorial =\u003e  http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-13-normal-mapping/\n![PyOpenGL](doc/screenshots/tu10.png)  \n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxilinjia%2Fpython3-pyopengl-tutorial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxilinjia%2Fpython3-pyopengl-tutorial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxilinjia%2Fpython3-pyopengl-tutorial/lists"}