Nov 2023 – Dec 2023

Python · ModernGL · GLSL · Rendering · Graphics Programming

OpenGL Rendering Engine

A compact Python / ModernGL renderer built to understand the complete model-to-screen graphics pipeline.

Project Goal

This project focused on understanding how an OpenGL-style renderer turns a 3D scene into a rendered image.

  • I wanted to understand the rendering flow usually hidden behind high-level game-engine components.
  • The goal was to build a small renderer where scene objects, camera movement, shaders, textures, lighting, and final output could be understood as connected parts of one pipeline.
  • I treated the project as a graphics-foundation project focused on readable rendering structure rather than building a large engine.

Implementation

I implemented a Python / ModernGL renderer with reusable rendering classes.

  • Built the rendering-resource structure around VBO, VAO, Texture, Mesh, ShaderProgram, and model-level objects.
  • Built a reusable object and resource path for generated cube geometry, repeated scene objects, and external OBJ models loaded through the renderer’s VBO / VAO structure.
  • Implemented model-view-projection matrix updates, camera movement, texture binding, and Phong-style lighting data flow through GLSL shader programs.

Result

The project produced a small OpenGL / ModernGL renderer demonstrating the model-to-screen rendering flow.

  • Rendered textured 3D models through a reusable scene, mesh, buffer, texture, shader, camera, and model structure.
  • Clarified how OpenGL-style rendering connects context setup, buffer creation, VAO binding, shader execution, matrix transformation, texture sampling, lighting, and scene rendering.
  • Established a practical understanding of how renderer architecture can organize graphics resources into a readable model-to-screen pipeline.
ModernGL renderer output
Renderer demonstration