« Previous - Version 16/21 (diff) - Next » - Current version
coder, 04/03/2014 15:26

Programmer's Guide

The libvg Programmer's Guide is a collection of tutorials and explanatory articles that explain how to create applications using libavg. It starts with a basic Hello World tutorial and progresses to successively more complex topics.

More Information

In addition to the Programmer's Guide, we provide a complete Reference to libavg. The Reference is concise, possibly a bit terse, but much more exhaustive.

All the examples in the guide are also checked into svn under libavg/src/samples, including the necessary media files. You can run them directly in that directory. If you prefer working from a larger piece of code, have look at the Firebirds sample (currently Mac and Linux only). The libavg version of Firebirds is based on an XNA tutorial by the magazine c't and developed by Alfred Bigler. It uses many of the concepts we describe below and is extremly well-readable.

Instructions for installing libavg are also available.

If anything is unclear, we have a forum for questions and discussions.


Hello World: The basics of programming with libavg.

Nodes: How libavg content is structured.

Node Attributes: More on libavg content.

Events: Dynamics - handling user input and timing.

App: Structuring applications (Legacy support for the deprecated AVGApp version available as well).

Logger: The libavg Logging facility.

Individual Node Classes

ImageNode: Bitmaps displayed on screen.

WordsNode: Displaying text, formatting, and font handling.

VideoNode: Playing back videos.

CameraNode: Interfacing to digital cameras.

MeshNode: Displaying content using a generic triangle mesh.

Rendering Specifics

Coordinate Systems: How libavg determines where to display nodes.

Rendering Attributes: Masks, compositing and color adjustments.

Offscreen Rendering: Rendering to an offscreen buffer.

FX Nodes: Rendering with GPU-based filters.

Dynamics: Input and Animation

Event Handling Details: An in-depth description of libavg event handling.

Touch Input: Higher-level events for NUI and touch-based user interfaces.

Camera Tracking: Using the computer vision system in libavg as an input device.

Timing: Details on frame timing and time-based callbacks.

Animation: Using the built-in animation framework.

Advanced Topics

Subclassing: Creating your own node classes and inserting them into a libavg scene.

Memory Management: Memory usage in libavg applications.

Multithreading: Things you need to know if you have more than one Python thread.

Plugins: Extending libavg with plugins written in C++.

Backwards Compatibility: Incompatible changes.


Environment Variables

The avgrc file

Eclipse IDE Notes