Git Product home page Git Product logo

ocra's Introduction

OCRA

OCRA stands for Overly Complicated Rendering Abstraction

It aims to give a common abstraction between Vulkan, OpenGL and DirectX using Vulkan data structure, or something close to it.

This adds command buffers, semaphores, fences and queues for OpenGL, making multithreading easier.

This project allows for easier ports over various APIs and easier state management for OGL.

OpenGL

For OGL, it will "compile" the states into lambda calls and give the ability to replay previously created graphics pipelines. This will make creation of programable pipelines and multi-threading in 3D Engine easier.

In this mode, OpenGL is run from a thread and commands are being pushed to it. It never actually renders anything to your window, presenting is done through SwapChain::Present, which uses D3D10 and WGL_NV_DX_interop

Vulkan

NOT YET SUPPORTED

When used with Vulkan, it will simply operate like an interface with Vulkan's functions.

DirectX

NOT YET SUPPORTED

Dependencies

Shared

Opengl backend

Compilation

Simply run CMake and select the backend you want to use as RenderApi

Debugging

In order to use NVIDIA Nsight Graphics with OCRA, you must enable the USE_D3D11 tickbox in CMake, this will use the D3D11 implementation of the SwapChain and push a glFinish after presentation to delimite frames.

D3D11 SwapChain won't give you any performance advantage and has been added solely for debugging purpose.

ocra's People

Contributors

gpinchon avatar

Stargazers

 avatar

Watchers

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