/OpenGL

Framework and Template for my OpenGL Projects

Primary LanguageC++

Compiling

Build Options :

  • Debug : Program is compiled with Debug Flags
  • Release : Program is compiled with Release Flags

OS :

  • Windows : Windows macro is inserted
  • Linux : Linux macro is inserted

Compilers :

  • MSVC : For Visual Studio work
  • g++ : For general purpose compiling

Organization

This framework for OpenGL is organized based on the directory underneath underneath the /OpenGL-Core/src/.... Such that OpenGL-Core/src/[dir] corresponds to the GLCore::[dir] namespace.

Note that anything under OpenGL-Core/src/ is accessible by default using GLCore::[name]

OpenGL-Core

Core (Default)

All the methods & classes for using the basic framework.

  • Application : Bundles all the other classes in GLCore::[name] together. Anything to do with getting information about the status of the running application can be done here.
  • Window : The window class to display for different OS.
  • LayerList : An ArrayList containing all the Layer
    • Layer(Abstract) : Every iteration / re-render of the window, the code in the layer is ran. Data in layers are INDEPDENT from eachother!

Extension

Simplification of opengl and also helpful utilities

  • AssetPool(Abstract) : A hashmap that keeps track of certain instances of classes under extensions.

Shaders

  • VertexPipelineShader : Shader for rendering vertices to the window.
  • ComputeShder : Shader for sending and recieving data computed in parallel from the GPU. IMPORTANT whenever you upload a vecN to the shader, the sum of all the vecN in the struct must be a multiple of 4 floats. ComputeShaders are optimized for vec4 so that is probably why; if you don't do this, you'll see weird outputs from the ssbo in the CPU.

Primitives

  • Texture : a 2D buffer object for GPU computations.

GLObjects

  • VAO : Vertex array object
  • VBO : Vertex buffer object
  • EBO : Element buffer object

Utils

Cameras

  • PerspectiveCamera - a perspective camera class

Production CheckList

  • Release & Debug Configurations

  • MSVC Support

  • g++ support

  • Windows Support

  • Linux Support

  • Importing Third Party Libraries

    • glad
    • glfw
    • imgui
    • spdlog
    • stb_image
  • Core

    • Application
    • Window
    • Layer & LayerStack & ImGuiLayer
    • OpenGLDebug
    • Log
  • Extension

    • Primitives
      • VertexPipeline
      • SSBO
      • Texture
    • Shaders
      • Shader (Base Class)
      • VertexPipelineShader
      • ComputeShader
    • AssetPool