Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/fabricesalvaire/pyopenglng

An OpenGL CFFI (and ctypes) binding for Python
https://github.com/fabricesalvaire/pyopenglng

opengl python python-wrapper python3

Last synced: 9 days ago
JSON representation

An OpenGL CFFI (and ctypes) binding for Python

Awesome Lists containing this project

README

        

/*
:Author: David Goodger ([email protected])
:Id: $Id: html4css1.css 7614 2013-02-21 15:55:51Z milde $
:Copyright: This stylesheet has been placed in the public domain.

Default cascading style sheet for the HTML output of Docutils.

See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/

/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }

table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }

.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }

.last, .with-subtitle {
margin-bottom: 0 ! important }

.hidden {
display: none }

a.toc-backref {
text-decoration: none ;
color: black }

blockquote.epigraph {
margin: 2em 5em ; }

dl.docutils dd {
margin-bottom: 0.5em }

object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}

/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/

div.abstract {
margin: 2em 5em }

div.abstract p.topic-title {
font-weight: bold ;
text-align: center }

div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }

div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }

div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }

/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }

div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/

div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }

div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }

div.figure {
margin-left: 2em ;
margin-right: 2em }

div.footer, div.header {
clear: both;
font-size: smaller }

div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }

div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }

div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }

div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }

div.system-messages {
margin: 5em }

div.system-messages h1 {
color: red }

div.system-message {
border: medium outset ;
padding: 1em }

div.system-message p.system-message-title {
color: red ;
font-weight: bold }

div.topic {
margin: 2em }

h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }

h1.title {
text-align: center }

h2.subtitle {
text-align: center }

hr.docutils {
width: 75% }

img.align-left, .figure.align-left, object.align-left {
clear: left ;
float: left ;
margin-right: 1em }

img.align-right, .figure.align-right, object.align-right {
clear: right ;
float: right ;
margin-left: 1em }

img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}

.align-left {
text-align: left }

.align-center {
clear: both ;
text-align: center }

.align-right {
text-align: right }

/* reset inner alignment in figures */
div.align-right {
text-align: inherit }

/* div.align-center * { */
/* text-align: left } */

ol.simple, ul.simple {
margin-bottom: 1em }

ol.arabic {
list-style: decimal }

ol.loweralpha {
list-style: lower-alpha }

ol.upperalpha {
list-style: upper-alpha }

ol.lowerroman {
list-style: lower-roman }

ol.upperroman {
list-style: upper-roman }

p.attribution {
text-align: right ;
margin-left: 50% }

p.caption {
font-style: italic }

p.credits {
font-style: italic ;
font-size: smaller }

p.label {
white-space: nowrap }

p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }

p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }

p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }

p.topic-title {
font-weight: bold }

pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }

pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }

pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}

span.classifier {
font-family: sans-serif ;
font-style: oblique }

span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }

span.interpreted {
font-family: sans-serif }

span.option {
white-space: nowrap }

span.pre {
white-space: pre }

span.problematic {
color: red }

span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }

table.citation {
border-left: solid 1px gray;
margin-left: 1px }

table.docinfo {
margin: 2em 4em }

table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }

table.footnote {
border-left: solid 1px black;
margin-left: 1px }

table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }

table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }

/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}

h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }

ul.auto-toc {
list-style-type: none }


PyOpenGLng


The official PyOpenGLng Home Page is located at http://fabricesalvaire.github.io/PyOpenGLng


The latest documentation build from the git repository is available at readthedocs.org PyOpenGLng@readthedocs-badge


Written by Fabrice Salvaire.

PyOpenGLng license
PyOpenGLng python version


PyOpenGLng last version
PyOpenGLng format
PyOpenGLng Download per month





Introduction


PyOpenGLng, proudly blessed as is, is an experimental OpenGL wrapper for Python which generates
the requested OpenGL API from the OpenGL XML API Registry and use an automatic translator to map the
C API to Python. The interface between C and Python is supported by ctypes and also by CFFI
which paves the way to use the pypy interpreter.


By design this wrapper supports all the OpenGL version, but it focus towards the programmable
pipeline and the most recent OpenGL API. On Linux desktop, Mesa 3D Graphics Library release 10 (November 2013)
supports the OpenGL 3.3 API for Intel HD GPU.


The Python package provides three components:



  • an Oriented Object API to the OpenGL XML registry,

  • a ctypes and CFFI wrapper,

  • an experimental high level API.



Warning


We should test all the API to claim a compliance with the OpenGL API. Since the OpenGL
API becomes more and more large and complex over the release, such attempt would require a huge
amount of work. Up to now only a part of the API was tested successfully.






Installation



Dependencies


PyOpenGLng requires the following dependencies:





  • Python 2.7

  • Numpy

  • freetype-py

  • PyQt 4.9 for the high level API and the examples





Installation from PyPi Repository


PyOpenGLng is made available on the PyPI repository at https://pypi.python.org/pypi/PyOpenGLng


Run this command to install the last release:



pip install PyOpenGLng



Installation from Source


The PyOpenGLng source code is hosted at https://github.com/FabriceSalvaire/PyOpenGLng


To clone the Git repository, run this command in a terminal:



git clone [email protected]:FabriceSalvaire/PyOpenGLng.git

Then to build and install PyOpenGLng run these commands:



python setup.py build
python setup.py install