openframeworks / openframeworks/openFrameworks

ofxGui super slow on Raspberry Pi using GLES2 programmable renderer

Open
#6,594 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
10.4k
Forks
2.6k
Avg merge
1d 21h
Merged PRs (30d)
9

Description

Noticed this slow down while doing some other work.

You can reproduce this by comparing the standard examples/gui/guiExample app.
Just change the main.cpp to the following:

#ifdef OF_TARGET_OPENGLES
	ofGLESWindowSettings settings;
	settings.glesVersion=2;
#else
	ofGLWindowSettings settings;
	settings.setGLVersion(3,2);
#endif
	ofCreateWindow(settings);

	// this kicks off the running of my app
	// can be OF_WINDOW or OF_FULLSCREEN
	// pass in width and height too:
	ofRunApp(new ofApp());

Change the settings.glesVersion line to toggle between GLES1 and GLES2 to see the performance drop. It goes from 60fps to 9fps when switching between the two render paths.

I also noticed drawing primitives like ofDrawCircle() to be very slow under GLES2.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with examples/gui/guiExample and its main.cpp, then reproduce the FPS difference by toggling settings.glesVersion between GLES1 and GLES2 on a Raspberry Pi. Compare the GLES2 rendering path, including primitive drawing such as ofDrawCircle(); done means the severe GLES2 slowdown is resolved and the example no longer drops from about 60fps to 9fps.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, raspberry-pi
Domain
computer-graphics, embedded-iot, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.