Giter Site home page Giter Site logo

spooky's Introduction

SPOOKY

Status License CircleCI

Please note that this project is outdated. Modern embedded hardware no longer requires reuploading any GPU memory.

Spooky is a C++14 cross-platform OpenGL 2.1/OpenGL ES 2.0 application runtime.
It features a unified interface for writing application for different platforms, also giving the developer as much maintainability as possible.

Simply saying, it is the simplest possible cross-platform OpenGL runtime.

But... why?

APIs of OpenGL 2.1 and OpenGL ES 2.0 don't differ that much. One could even write software for both of them without any #ifdefs, but there's a catch.

The basic difference between OpenGL on desktops (OpenGL 2.1) and OpenGL on mobile/embedded devices (OpenGL ES 2.0) lies in OpenGL context. On mobile devices, every time you minimize and maximize your application, it loses it's context. This results in all GPU memory being purged. The CPU memory, however, remains untouched. Spooky is designed to e.g. reupload all GPU memory when necessary. There are also some other minor runtime features, all listed below.

FEATURES

  • Cross-platform
    Official support for Linux/Windows/Android. There are still more platforms to come.
  • Flexibility
    Can be adopted to work with any application/game structure.
  • Internal window system
    One could compare it to Android's Activities, but in OpenGL. Spooky includes an easy mechanism to switch between such windows. As all rendering can be separated from the logic, it is possible to preserve render data, making the whole system very efficient.
  • Unified input handling
    A single user-provided piece of code can handle keyboard, mouse and touchscreen.
  • File access
    Simple abstraction for accessing assets.
  • Logging
    Status, warning, debug, and error logging is available.

STRUCTURE

Structure

A few notes:

  • This runtime should be slightly modified by the programmer to fulfill project needs. It is possible, but discouraged to use it without any changes.
  • Contexts are used to store Window-independent (persistent) data.
  • Window & Window Render are pure virtual classes, and their implementations are to be supplied by the user.

INSTALLATION

See INSTALL.md for details.

COPYRIGHT

Copyright 2015-2017 Dariusz Stojaczyk

spooky's People

Contributors

darsto 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.