From 0c13bed1592712136762601689488282bc3bf9f1 Mon Sep 17 00:00:00 2001 From: Andrew Bell Date: Mon, 26 Jan 2026 15:54:20 -0500 Subject: [PATCH 1/3] Raspberry Pi doc updates (removing 2/3, merging 4&5) --- docs/htmlsrc/guides/linux-notes/index.html | 3 +- docs/htmlsrc/guides/linux-notes/rpi2.html | 109 -------------------- docs/htmlsrc/guides/linux-notes/rpi3.html | 107 -------------------- docs/htmlsrc/guides/linux-notes/rpi4.html | 112 --------------------- docs/htmlsrc/guides/linux-notes/rpi5.html | 90 +++++++++++++++++ 5 files changed, 91 insertions(+), 330 deletions(-) delete mode 100644 docs/htmlsrc/guides/linux-notes/rpi2.html delete mode 100644 docs/htmlsrc/guides/linux-notes/rpi3.html delete mode 100644 docs/htmlsrc/guides/linux-notes/rpi4.html create mode 100644 docs/htmlsrc/guides/linux-notes/rpi5.html diff --git a/docs/htmlsrc/guides/linux-notes/index.html b/docs/htmlsrc/guides/linux-notes/index.html index ee826a51db..286134fe11 100644 --- a/docs/htmlsrc/guides/linux-notes/index.html +++ b/docs/htmlsrc/guides/linux-notes/index.html @@ -29,8 +29,7 @@

Linux Notes

Platform Setup Guides:

diff --git a/docs/htmlsrc/guides/linux-notes/rpi2.html b/docs/htmlsrc/guides/linux-notes/rpi2.html deleted file mode 100644 index 2b9dd5d45d..0000000000 --- a/docs/htmlsrc/guides/linux-notes/rpi2.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - Cinder on Raspberry Pi 2 - - - - - - - - - - - - - - - - - - - - - - -

Raspberry Pi 2 Notes

-

Requirements

- -

CMake

-

To install CMake:

-
sudo apt-get install cmake
- -

Clang

-

Cinder should be built using the version of Clang (v3.5.0) packaged for Raspbian Jessie. Install it using apt-get:

-
sudo apt-get install clang
-

You can also download the binaries for Clang from here. For the Raspberry Pi 2, download Clang for armv7a Linux.

-

To set Clang as the default compiler, select /usr/bin/clang++ when prompted by this command: -

sudo update-alternatives --config c++
-

- -

If you have special reason to use GCC instead of Clang, the CPU/GPU memory split will need to be adjusted. The default settings for the memory split causes a hard crash when building Cinder. Please see the Raspberry Pi 2 documentation for instructions.

-

NOTE: Cinder has not been tested using GCC 5.x on Raspberry Pi 2.

-

Cinder Dependencies

-
sudo apt-get install libxcursor-dev \
-libgles2-mesa-dev \
-zlib1g-dev \
-libfontconfig1-dev \
-libmpg123-dev \
-libsndfile1 \
-libsndfile1-dev \
-libpulse-dev \
-libasound2-dev \
-libcurl4-gnutls-dev \
-libgstreamer1.0-dev \
-libgstreamer-plugins-bad1.0-dev \
-libgstreamer-plugins-base1.0-dev \
-gstreamer1.0-libav \
-gstreamer1.0-alsa \
-gstreamer1.0-pulseaudio \
-gstreamer1.0-plugins-bad
-
- -

Building Cinder

-

Fetching and Building Cinder

-
git clone --recursive https://github.com/cinder/Cinder.git
-cd Cinder
-mkdir build && cd build
-cmake .. -DCINDER_TARGET_GL=es2-rpi
-make -j 3
-
- -

Building and Running BasicApp

-

Building

-
cd samples/BasicApp/proj/cmake
-mkdir build && cd build
-cmake .. -DCINDER_TARGET_GL=es2-rpi
-make
- -

Running

-

Starting from samples/BasicApp/proj/cmake/build:

-
./Debug/BasicApp
- -

Exiting

-

Hit the Esc key to exit the BasicApp. Cinder for Linux on the Raspberry Pi 2 currently has Esc hardcoded to exit an application. Otherwise it's non-trivial to return to the OS. A future version will offer a more graceful way to handle this.

-

Troubleshooting

-

Audio

- -

Starting the pulsedeamon

-

Raspbian ships with Pulse Audio installed, however you must start the pulsedeamon before you can use audio in your application. Do that by running the following:

-
pulseaudio -D
- -

No Output Using 3.5mm headphone jack

-

Try the following, it will force output to the 3.5mm jack (more information here):

-
sudo amixer cset numid=3 1
- - - - - - - - - \ No newline at end of file diff --git a/docs/htmlsrc/guides/linux-notes/rpi3.html b/docs/htmlsrc/guides/linux-notes/rpi3.html deleted file mode 100644 index 8b290bfdfe..0000000000 --- a/docs/htmlsrc/guides/linux-notes/rpi3.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - Cinder on Raspberry Pi 3 - - - - - - - - - - - - - - - - - - - - - - -

Raspberry Pi 3 Notes

-

Requirements

- -

CMake

-

To install CMake:

-
sudo apt-get install cmake
- -

Cinder Dependencies

-
sudo apt-get install libxcursor-dev \
-libgles2-mesa-dev \
-zlib1g-dev \
-libfontconfig1-dev \
-libmpg123-dev \
-libsndfile1 \
-libsndfile1-dev \
-libpulse-dev \
-libasound2-dev \
-libcurl4-gnutls-dev \
-libgstreamer1.0-dev \
-libgstreamer-plugins-bad1.0-dev \
-libgstreamer-plugins-base1.0-dev \
-gstreamer1.0-libav \
-gstreamer1.0-alsa \
-gstreamer1.0-pulseaudio \
-gstreamer1.0-plugins-bad \
-libboost-filesystem-dev
-
- -

Building Cinder

-

Fetching and Building Cinder

-
git clone --recursive https://github.com/cinder/Cinder.git
-cd Cinder
-mkdir build && cd build
-cmake .. -DCINDER_TARGET_GL=es2-rpi
-make -j 3
-
- -

NOTE: Attempting to build Cinder with more than 3 jobs (specified with the -j 3 parameter) will likely cause a hard crash due to GCC memory requirements.

- -

Clang

-

Cinder can also be used with the version of Clang (v3.5.0) packaged for Raspbian Jessie. Install it using apt-get:

-
sudo apt-get install clang
-

To set Clang as the default compiler, select /usr/bin/clang++ when prompted by this command: -

sudo update-alternatives --config c++
-

- -

Building and Running BasicApp

-

Building

-
cd samples/BasicApp/proj/cmake
-mkdir build && cd build
-cmake .. -DCINDER_TARGET_GL=es2-rpi
-make
- -

Running

-

Starting from samples/BasicApp/proj/cmake/build:

-
./Debug/BasicApp
- -

Exiting

-

Hit the Esc key to exit the BasicApp. Cinder for Linux on the Raspberry Pi 3 currently has Esc hardcoded to exit an application. Otherwise it's non-trivial to return to the OS. A future version will offer a more graceful way to handle this.

-

Troubleshooting

-

Audio

- -

Starting the pulsedeamon

-

Raspbian ships with Pulse Audio installed, however you must start the pulsedeamon before you can use audio in your application. Do that by running the following:

-
pulseaudio -D
- -

No Output Using 3.5mm headphone jack

-

Try the following, it will force output to the 3.5mm jack (more information here):

-
sudo amixer cset numid=3 1
- - - - - - - - - diff --git a/docs/htmlsrc/guides/linux-notes/rpi4.html b/docs/htmlsrc/guides/linux-notes/rpi4.html deleted file mode 100644 index 4c2fce0f61..0000000000 --- a/docs/htmlsrc/guides/linux-notes/rpi4.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - Cinder on Raspberry Pi 4 - - - - - - - - - - - - - - - - - - - - - - -

Raspberry Pi 4 Notes

-

Requirements

- -

CMake

-

To install CMake:

-
sudo apt-get install cmake
- -

Cinder Dependencies

-
sudo apt-get install libxcursor-dev \
-libgles2-mesa-dev \
-zlib1g-dev \
-libfontconfig1-dev \
-libmpg123-dev \
-libsndfile1 \
-libsndfile1-dev \
-libpulse-dev \
-libasound2-dev \
-libcurl4-gnutls-dev \
-libgstreamer1.0-dev \
-libgstreamer-plugins-bad1.0-dev \
-libgstreamer-plugins-base1.0-dev \
-gstreamer1.0-libav \
-gstreamer1.0-alsa \
-gstreamer1.0-pulseaudio \
-gstreamer1.0-plugins-bad \
-libboost-filesystem-dev \
-xcb \
-libxcb-xkb-dev \
-x11-xkb-utils \
-libx11-xcb-dev \
-libxkbcommon-x11-dev
-
- -

Building Cinder

-

Fetching and Building Cinder

-
git clone --recursive https://github.com/cinder/Cinder.git
-cd Cinder
-mkdir build && cd build
-cmake .. -DCINDER_TARGET_GL=es3-rpi
-make -j 3
-
- -

NOTE: Attempting to build Cinder with more than 3 jobs (specified with the -j 3 parameter) will likely cause a hard crash due to GCC memory requirements.

- -

Clang

-

Cinder can also be used with the version of Clang (v3.5.0) packaged for Raspbian Jessie. Install it using apt-get:

-
sudo apt-get install clang
-

To set Clang as the default compiler, select /usr/bin/clang++ when prompted by this command: -

sudo update-alternatives --config c++
-

- -

Building and Running BasicApp

-

Building

-
cd samples/BasicApp/proj/cmake
-mkdir build && cd build
-cmake .. -DCINDER_TARGET_GL=es3-rpi
-make
- -

Running

-

Starting from samples/BasicApp/proj/cmake/build:

-
./Debug/BasicApp
- -

Exiting

-

Hit the Esc key to exit the BasicApp. Cinder for Linux on the Raspberry Pi 3 currently has Esc hardcoded to exit an application. Otherwise it's non-trivial to return to the OS. A future version will offer a more graceful way to handle this.

-

Troubleshooting

-

Audio

- -

Starting the pulsedeamon

-

Raspbian ships with Pulse Audio installed, however you must start the pulsedeamon before you can use audio in your application. Do that by running the following:

-
pulseaudio -D
- -

No Output Using 3.5mm headphone jack

-

Try the following, it will force output to the 3.5mm jack (more information here):

-
sudo amixer cset numid=3 1
- - - - - - - - - diff --git a/docs/htmlsrc/guides/linux-notes/rpi5.html b/docs/htmlsrc/guides/linux-notes/rpi5.html new file mode 100644 index 0000000000..1a69fd3a8d --- /dev/null +++ b/docs/htmlsrc/guides/linux-notes/rpi5.html @@ -0,0 +1,90 @@ + + + + Cinder on Raspberry Pi 4 & 5 + + + + + + + + + + + + + + + + + + + + + + +

Raspberry Pi 4 & 5 Notes

+

Requirements

+ + +

Cinder Build Dependencies

+
sudo apt-get install zlib1g-dev \
+libfontconfig1-dev \
+libcurl4-openssl-dev \
+libgl1-mesa-dev \
+libpulse-dev \
+libmpg123-dev \
+libsndfile1-dev \
+libgstreamer1.0-dev \
+libgstreamer-plugins-base1.0-dev \
+libgstreamer-plugins-bad1.0-dev \
+libxcursor-dev \
+libxrandr-dev \
+libxinerama-dev \
+libxi-dev
+
+ +

Runtime Dependencies for Video Playback

+

These are not needed to build Cinder, but are required at runtime for GStreamer video (e.g. the QuickTimeBasic sample):

+
sudo apt-get install gstreamer1.0-gl \
+gstreamer1.0-libav
+
+ +

Building Cinder

+

Fetching and Building Cinder

+
git clone --recursive https://github.com/cinder/Cinder.git
+cd Cinder
+cmake -B build -DCINDER_TARGET_GL=es3-rpi -DCMAKE_BUILD_TYPE=Debug
+cmake --build build -j$(nproc)
+
+ +

Output: lib/linux/aarch64/es3-rpi/Debug/libcinder.a

+ +

Building and Running BasicApp

+

Building

+
cd samples/BasicApp/proj/cmake
+cmake -B build -DCINDER_TARGET_GL=es3-rpi -DCMAKE_BUILD_TYPE=Debug
+cmake --build build
+
+ +

Running

+

Starting from samples/BasicApp/proj/cmake/build:

+
./Debug/BasicApp
+ +

Exiting

+

Hit the Esc key to exit the application.

+ + + + + + + + + + From 0a1819976511ab5701fcb4b4ae0d2c7c33e4eaea Mon Sep 17 00:00:00 2001 From: Andrew Bell Date: Mon, 26 Jan 2026 15:55:01 -0500 Subject: [PATCH 2/3] FinderMPG123 update for Raspberry PI --- proj/cmake/modules/FindMPG123.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proj/cmake/modules/FindMPG123.cmake b/proj/cmake/modules/FindMPG123.cmake index cc338d3770..3715e07b59 100644 --- a/proj/cmake/modules/FindMPG123.cmake +++ b/proj/cmake/modules/FindMPG123.cmake @@ -8,7 +8,7 @@ set( MPG123_FOUND false ) -set( MPG123_INCLUDE_DIRS /opt/local/include /usr/local/include /usr/include /usr/include/x86_64-linux-gnu ) +set( MPG123_INCLUDE_DIRS /opt/local/include /usr/local/include /usr/include /usr/include/x86_64-linux-gnu /usr/include/aarch64-linux-gnu ) set( MPG123_LIBRARY_DIRS /opt/local/lib /usr/local/lib /usr/lib ) set( MPG123_LIB_SUFFIXES lib x86_64-linux-gnu arm-linux-gnueabihf aarch64-linux-gnu ) From 16a4173cc153fef0b4f12fdb7c9353372c4533c4 Mon Sep 17 00:00:00 2001 From: Andrew Bell Date: Mon, 26 Jan 2026 15:55:32 -0500 Subject: [PATCH 3/3] GstPlayer update for Raspberry Pi; fixing bug with GLES --- include/cinder/linux/GstPlayer.h | 6 +++++- src/cinder/linux/GstPlayer.cpp | 13 ++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/include/cinder/linux/GstPlayer.h b/include/cinder/linux/GstPlayer.h index e0499b8ecc..507a44a1c0 100644 --- a/include/cinder/linux/GstPlayer.h +++ b/include/cinder/linux/GstPlayer.h @@ -45,7 +45,11 @@ #if defined( CINDER_LINUX_EGL_ONLY ) #include #elif defined( CINDER_LINUX ) - #include + #if defined( CINDER_GL_ES ) + #include + #else + #include + #endif #endif #define CINDER_GST_HAS_GL diff --git a/src/cinder/linux/GstPlayer.cpp b/src/cinder/linux/GstPlayer.cpp index 2645e5fb27..9f7f1281ef 100644 --- a/src/cinder/linux/GstPlayer.cpp +++ b/src/cinder/linux/GstPlayer.cpp @@ -11,7 +11,9 @@ // These files will include a glfw_config.h that's custom to Cinder. #include "glad/glad.h" #define GLFW_EXPOSE_NATIVE_X11 - #define GLFW_EXPOSE_NATIVE_GLX + #if ! defined( CINDER_GL_ES ) + #define GLFW_EXPOSE_NATIVE_GLX + #endif #define GLFW_EXPOSE_NATIVE_EGL #include "glfw/glfw3.h" #include "glfw/glfw3native.h" @@ -531,13 +533,18 @@ bool GstPlayer::initialize() ci::gl::context()->makeCurrent( true ); } #else - if( ! sGstGLDisplay ) + if( ! sGstGLDisplay ) { + #if defined( CINDER_GL_ES ) + sGstGLDisplay = (GstGLDisplay*)gst_gl_display_egl_new_with_egl_display( (gpointer)::glfwGetEGLDisplay() ); + #else sGstGLDisplay = (GstGLDisplay*)gst_gl_display_x11_new_with_display( ::glfwGetX11Display() ); + #endif + } if( ! sGstGLContext ) { ci::gl::env()->makeContextCurrent( nullptr ); sGstGLContext = (GstGLContext*)gst_object_ref( gst_gl_context_new( sGstGLDisplay ) ); #if defined( CINDER_GL_ES ) - sharedCtx = gst_gl_context_new_wrapped( sGstGLDisplay, (guintptr)::glfwGetEGLContext( platformData->mContext ), GST_GL_PLATFORM_GLX, GST_GL_API_GLES2 ); + sharedCtx = gst_gl_context_new_wrapped( sGstGLDisplay, (guintptr)::glfwGetEGLContext( platformData->mContext ), GST_GL_PLATFORM_EGL, GST_GL_API_GLES2 ); #else sharedCtx = gst_gl_context_new_wrapped( sGstGLDisplay, (guintptr)::glfwGetGLXContext( platformData->mContext ), GST_GL_PLATFORM_GLX, GST_GL_API_OPENGL ); #endif