openframeworks / openFrameworks

openFrameworks is a community-developed cross platform toolkit for creative coding in C++.
http://openframeworks.cc
Other
9.97k stars 2.55k forks source link

Raspberry Pi - 0.12.0 - OpenGL compatibility with Bullseye #7654

Open ofTheo opened 1 year ago

ofTheo commented 1 year ago

@dimitre - curious if the shadows or assimp example works for you on your Rpi 4? Where you using Bullseye version when you were testing?

I did a clean install today with 64bit Raspberry Pi OS ( Bullseye ) and had issues with any example that sets the GL version. Was getting GLXBadFBConfig errors seeing to point to ubsupported GL version.

Some info here - seems like Pi 3 defaults to OpenGL ES while 4 defaults to OpenGL 4 ( capped at 2.1 ) https://forums.raspberrypi.com/viewtopic.php?t=294077

Also in Bullseye you can't change the GL / Fake KMS driver like you can in prior versions.

dimitre commented 1 year ago

I didnt test this examples. I'm back home tomorrow so I can test things again in different hardware. it will probably present the same issues as yours.

ofTheo commented 1 year ago

Update: I have been able to launch more examples with Buster and arm6vl vs Bullseys and arm64. On arm6vl a lot of the 3D models in assimp3DModelLoader error/crash on load - only Astroboy works without issue. This seems to be a separate issue with assimp 4.1 and maybe the amount of data in the models.

It could be that my Bullseye install was not setup correctly, but I get the sense we need different defaults for Pi in terms of GL vs GLES and what shaders are used.

ofTheo commented 1 year ago

Just a note that RPI 4 supports ES 3.1 - so we should be able to use that as default on Pi 4:

Looks like Bullseye supports Mesa 20..3.5 which supports 3.1

So might be good to check the OF code ofGLESWindowSettings and see if 3.1 can be enabled.

Refs: https://forums.raspberrypi.com/viewtopic.php?t=307848 https://forums.raspberrypi.com/viewtopic.php?t=330003

related #7689

mccap079 commented 9 months ago

I'm successfully able to run the v0.12.0 shader examples on RPi 4B running Bullseye by setting main.cpp as follows

#include "ofMain.h"
#include "ofApp.h"

//========================================================================
int main( ){
    ofGLESWindowSettings settings;
    settings.glesVersion=3;

    auto window = ofCreateWindow(settings);

    ofRunApp(window, make_shared<ofApp>());
    ofRunMainLoop();
}

and ofIsGLProgrammableRenderer() returns false so it runs gl2 shaders.