This repository contains implementations of laboratory exercises from an Interactive Computer Graphics course at FER - starting with 2D experiments (lines, polygons, Cohen–Sutherland clipping, etc.) and progressing to a full-fledged C++/OpenGL renderer capable of loading .obj files, supporting multiple texture types, and in the final version, implementing shading.
A pillow-robot party in a liminal space.
- 2D graphics fundamentals: polygon drawing, transformations, clipping (Cohen–Sutherland)
- Transition to 3D: C++/OpenGL renderer
- .obj model loading support
- Multiple texture types (diffuse, specular, …)
- Final stage: shading implemented
The initial version of the project is complete. Planned future work includes:
- Adding colored lights (point/spot/directional)
- Creating a high-level API to support building 3D desktop applications
- Code refactoring to improve structure, readability and maintainability
├─ Lab 1: 2D Line Drawing
│ └─ Basic raster line algorithms and Cohen–Sutherland clipping
├─ Lab 2: Polygon Drawing and Filling
│ └─ Drawing filled polygons, polygon transformations
├─ Lab 3: OpenGL Introduction
│ └─ Simple 3D rendering setup, basic shader pipeline
├─ Lab 4: 3D Models
│ └─ Loading and rendering simple 3D objects (.obj)
├─ Lab 5: Camera and Transformations
│ └─ Implementing model, view, and projection matrices; user-controlled camera
├─ Lab 6: Hidden Surface Removal
│ └─ Depth buffering, geometry shaders, basic occlusion handling
├─ Lab 7: Bezier Curves
│ └─ Curve generation and rendering
├─ Lab 8: Shading
│ └─ Implementing flat, Gouraud, and Phong shading techniques
├─ Lab 9: Texturing
│ └─ Applying diffuse, specular, normal maps
└─ Lab 10: Full Renderer
└─ Final renderer combining models, textures, lighting, and shadingIf you’re interested in computer graphics, also check out:
- eterra – procedurally generates infinite 3D cities in the browser using React Three Fiber