GithubHelp home page GithubHelp logo

sgal's Introduction

SGAL V0.1.2

The Simple Graphics and Audio Library is a straight-forward object-oriented library built in C++ meant to give the user a streamlined way of creating robust 3D graphics through a simple and small API. It uses OpenGL for the low-level rendering operations, and all window handling is done in-framework. It is cross platform.

All dependencies are automatically downloaded and synced when you compile using CMake.

Links

Github: Link

Relevant Links

GLEW: Link

CMake: Link

What's New in 0.1.1

alt text

This version is powered by the new VertexArray object which allows you to generate meshes without pushing anything to the GPU. This means you can generate meshes on another thread in your RAM and when its finished, push it to your graphics card and start rendering. An instance of this can be shown in the new demo project marching-cubes.

There's also the introduction of the Primitives system. Before you compile, if python is installed, the binary files within the prims folder will be converted into byte-arrays into a Primitives.cpp file which allows you to access these primitives directly from the framework. If python isn't installed, it still compiles, just without the primitives. Now you can render cubes or planes, build meshes out of cubes or planes and never have to load in any files.

Compilation

SGAL uses cmake to compile. It needs a build folder and lib folder. Change your directory to the build folder and run cmake .. (with your additional parameters if needed) and it should get to work compiling the library. All files needed for linking will be found in the lib folder, and if you don't want to compile the client application simply disable the COMPILE_CLIENT option in CMake.

Dependencies

SGAL uses only the GLEW library as a dependancy. For now it pulls from the cmake-glew repository since it includes the glew.c file which is needed for easy compilation until I can figure out the official repo.

Changelog

Version 0.1.2 - 8/30/2020

  • Implemented Animation, AnimationSequence, and AnimationSystem
  • Fixed small bugs

Version 0.1.1 - 5/6/2020

  • Introduced the VertexArray.
  • Created the SingleModel class.
  • Bug fixes.
  • Introduced primitive system and header generation.
  • Made the application folder more robust.

Planned Features

  • Add assimilate feature to VertexArray where it combines vertices with the same position.
  • Text rendering.
  • Orthographic projection.

Version 0.1 - 4/29/2020

  • Complete rewrite.
  • Foundation for UI rendering.
  • Now does in-house window handling. Right now it only supports windows, I will do an X11 implementation soon.
  • Basic serialization so you can generate RawModels and write/read them from files.
  • In-house shaders for 2D and 3D rendering.
  • Supports multiple framebuffers.
  • Each render takes a different context, meaning you can change cameras and render with different lights.
  • Architecture looks prettier.

Planned Features

  • SingleModel class that represents a RawModel and Model in one fell swoop.
  • Actual documentation.
  • Vulkan instead of OpenGL.
  • X11 implementation.
  • Normal maps and more PBR-like lighting calculations.

Projects

alt text Here we're using mesh generation to generate a single RawModel that represents about 505,000 cubes from perlin noise. It generates in a couple of seconds and runs faster than 60 FPS.

Author

Max Ortner

sgal's People

Contributors

maxortner01 avatar

Stargazers

 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.