Skip to content

Latest commit

 

History

51 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

C++ CMake OpenGL

OpenGL

OpenGL 3D Renderer

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.

image

A pillow-robot party in a liminal space.

Features

  • 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

Status & Future Work

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

Repository Structure

├─ 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 shading

Related Projects

If you’re interested in computer graphics, also check out:

  • eterra – procedurally generates infinite 3D cities in the browser using React Three Fiber

About

A C++ and OpenGL renderer developed through FER’s Interactive Computer Graphics course, evolving from 2D algorithms to a full 3D pipeline.

Resources

Stars

1 star

Watchers

1 watching

Forks

Contributors

Languages