Skip to main content

oogli

Build Status PyPI version Status Python Compatibility Downloads Coverage Status

Oogli is Beautiful

Object Oriented Graphics Library Interface written in Python

Motivation:

I was dissatisfied with difficulty in producing easy to read and understand OpenGL code. This small library helps eliminate some of the boilerplate inherent within OpenGL’s API. Oogli greatly simplifies the interface while still providing access to the underlying GLFW3 and OpenGL API.

License:

This package is released as Apache 2.0 license.

However, at your option, you may apply any OSI approved free software license you choose provided that you adhere to the free software license chosen and additionally follow these criteria:

  1. list the author’s name of this software as a contributor to your final product

  2. provide credit to your end user of your product or software without your end user asking for where you obtained your software

  3. notify the author of this software that you are using this software

  4. If you believe there can be some benefit in providing your changes upstream, you’ll submit a change request. While this criteria is completely optional, please consider not being a dick.

Installation:

Oogli was designed with GLFW-CFFI in mind and uses the API provided by GLFW-CFFI. In addition, Oogli uses numpy.

Installing via pip

Install via pip install oogli.

Installing GLFW-CFFI via pip

Install via pip install glfw-cffi.

Installing Numpy via pip

Install via pip install numpy.

Installing GLFW3

GLFW3 is available for several different platforms:

  • Ubuntu/Debian: sudo apt-get install -y libglfw3-dev

  • Fedora/Red Hat: sudo yum install -y libglfw3-dev

  • Mac OS X with Homebrew: brew install glfw3

  • Windows: There is an installer available 64-bit Windows or 32-bit Windows

GLFW3 is relatively new, so some older installations of Linux may not have libglfw directly available. You may check out the travis.yml file within our github repo for more information on setup on older systems.

Usage:

Sample Usage:

This is the required code to produce a shaded triangle using oogli:

import oogli

v_shader = '''
    #version 410
    in vec2 vertices;
    void main () {
        gl_Position = vec4(vertices, 0.0, 1.0);
    }
'''

f_shader = '''
    #version 410
    out vec4 frag_color;
    void main () {
        frag_colour = vec4(0.3, 1.0, 0.3, 1.0);
    }
'''

# Create a program from the shaders
#  Note: This will auto request an OpenGL context of 4.1
program = oogli.Program(v_shader, f_shader)

# Vertices for a 2D Triangle
triangle = [(0.0, 0.5), (-0.5, 0.5), (-0.5, -0.5)]

with oogli.Window('Oogli', 640, 480) as win:
    # Main Loop
    while win.should_run()
        # Render triangle
        program.draw(vertices=triangle)

More complex examples can be found within the examples folder on the github repo.

Contributions:

Contributions are welcome. When opening a PR, please keep the following guidelines in mind:

  • Before implementing, please open an issue for discussion.

  • Make sure you have tests for the new logic.

  • Make sure your code passes flake8

  • Add yourself to contributors at README.md and/or your contributions.

Contributors

Metadata

Release files for oogli 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for oogli 0.1.0
File Size Uploaded Provenance Actions
oogli-0.1.0.tar.gz 40.4 kB Without provenance Details for oogli-0.1.0.tar.gz

Release files / oogli-0.1.0.tar.gz

Download URL oogli-0.1.0.tar.gz
Size 40.4 kB
Tags Source
SHA-256 checksum
How to use checksums
bff052d35a903f1c92a27083d35aee020c3eeb709f3c188a4293a740097305b1
BLAKE2b-256 checksum
How to use checksums
1904ef5f1af5635e65556d80102e9bb17e38cb056b04325e663d9d87e9237848
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for oogli 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page