Giter Club home page Giter Club logo

ogla's Introduction

OGLA: OpenGL Abstraction

OGLA : OpenGL Abstraction is a reference renderer implemented in C++.

The objective of this project is to abstract renderer functionality to serve as a foundation for simple 2D/3D real-time applications.

The design principle applied was to identify rendering engine concepts, and ecapsulate these in a simple and inteligible abstraction to be easily readable, understandable, learnable, and hackable.

Perspective Projection Orthographic Projection

Architecture

TODO: Insert architecture diagram.

Features

  • Input
    • Keyboard
    • Mouse
  • Window
    • Event Handling
    • Time Frame
  • Vertex
  • Vertex Buffer
  • Index Buffer
  • Vertex Array
  • Vertex Data
  • Shader
  • Texture
  • Mesh
  • Model
  • Camera
    • Key and Mouse Movement
    • Perspective Camera
    • Orthographic Camera
  • Primitive Geometry
  • Material
  • Light
  • Scene
  • Scene State Machine
  • Layer
  • Font

Installation and Build

  1. git clone --recursive https://github.com/jsusaki/OGLA.git
  2. cd OGLA
  3. mkdir build
  4. cd scripts
  5. ./config.sh
  6. ./build.sh
  7. ./run.sh

Windows

Visual Studio Solution and batch script will be provided.

Control

  • Application Control

    • ESCAPE: Close
    • F11: Full Screen (Only on Primary Screen)
    • TAB: Toggle Mouse Focus
  • Rendering Control

    • 1: Normal Rendering
    • 2: Wireframe Rendering
  • Camera Control

    • W: Move Forward
    • S: Move Backward
    • A: Move Left
    • D: Move Right
    • Q: Move Down
    • E: Move Up
    • F1: Perspective Camera
    • F2: Orthographic Camera
    • Cursor: Focal Point
    • Wheel: Zoom in / Zoom Out

Dependencies

  • CMake: Build System
  • GLFW: Cross-platform Input and Window
  • glad: OpenGL Extension
  • GLM: Mathematics
  • stb_image: Image Loading
  • assimp: Asset Loading

ogla's People

Contributors

rafamenezes avatar jsusaki avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.