Based on http://github.com/projectionist/scratch.
The master branch is a base for projections which use video textures.
Visit http://projectionist.array.bz/projections for some example projections based on this project.
See projection/* branches of this repo for video-based projections.
See http://github.com/projectionist/scratch for an empty project.
The scratch project is developed to be built on a Debian VM or a Rapsberry PI as discussed on the tools page page of the project website.
- Clone the project:
git clone https://github.com/projectionist/scratch.git cdin to the project folder- run
vagrant up - run
vagrant reload(required: for Projectionist to start Weston) - run
vagrant ssh - run
make clean. It is a good idea to run these when switching between different branches of the same repository. - install
ffmpeg - run
make - run
bin/main <video-path>. You should see a video playing.
root dir, run (e.g.) `make` here .
├── bin
vendor code ├── include
│ └── projection
platform specific code code ├── platform
│ ├── rpi
│ │ └── projection
│ └── weston
│ └── projection
the source for the projection └── src
└── scratch
- Vendor code is where we put depedencies which are not installed with the OS package manager
- The platform directory lists routines for establishing a OpenGL ES 2.0 contexts
- The source directory is the place to implement your projection
- To vendor a dependency, including header-only libraries, use the
includefolder.- Consider using git submodules to manage these dependencies.
- External dependencies installed on the OS can be included in the build if they provide a
pkg-config. The loop project uses this method for FFmpeg flags:- The project has it's own pkg-config:
loop.pc - The project
makefilealters to the pkg-config build variables to include itself
- The project has it's own pkg-config:
The build system targets NOOBS (Raspberry PI) as the deployment platform and a Debian VM running Wayland (weston) as a development environment.
For each platform, there is a single entry point: projection::play(drawing).
Platform-specific implementations are in platform/<platform-name>/projection/play.cpp.
The build system selects the correct implementation.
http://projectionist.array.bz/tools
Based on the simple-egl example from weston source code: https://github.com/krh/weston/blob/0eab05d2a7cf610e4d049dfd81b0100d4219e305/clients/simple-egl.c