processing / processing/processing4
Detect max `smooth()` setting to avoid OpenGL errors
Personne n'a encore pris cette issue.
- Langage dominant
- Java
- Étoiles
- 494
- Forks
- 183
- Merge moyen
- 4 h 39 min
- PR mergées (30 j)
- 3
Description
Created by: cacheflowe
I don't think this really needs to be addressed, but I wanted to make note of the error, since I didn't find any info elsewhere. I was moving a Java project to Mac from Windows (where this isn't a problem), and it took me a bit to figure out what was causing the error.
On a Silicon Mac (I'm on an M1) with Processing 4.2, setting smooth(8) in setup() has a weird side-effect of breaking PGraphics. I now see in the smooth() documentation that 8 is a valid value, but not on all machines. This makes sense, and probably explains the error, noted below. The problem goes away if I use smooth(4) instead!
The code:
PGraphics pg;
void setup() {
size(400, 400, P3D);
smooth(8);
pg = createGraphics(400, 400, P3D);
pg.beginDraw();
pg.fill(0, 255, 0);
pg.rect(20, 20, 60, 60);
pg.endDraw();
}
void draw() {
background(0);
image(pg, 0, 0);
ellipse(120, 192, 144, 144);
ellipse(280, 192, 144, 144);
}
The error:
OpenGL error 1282 at bot beginDraw(): invalid operation
RuntimeException: Cannot validate shader program:
Validation Failed: Current draw framebuffer is invalid.
RuntimeException: Cannot validate shader program:
Validation Failed: Current draw framebuffer is invalid.
If I comment out the drawing on pg, the error changes, and the app doesn't completely crash:
The code:
PGraphics pg;
void setup() {
size(400, 400, P3D);
smooth(8);
pg = createGraphics(400, 400, P3D);
}
void draw() {
background(0);
image(pg, 0, 0);
ellipse(120, 192, 144, 144);
ellipse(280, 192, 144, 144);
}
The error:
UNSUPPORTED (log once): POSSIBLE ISSUE: unit 0 GLD_TEXTURE_INDEX_2D is unloadable and bound to sampler type (Float) - using zero texture because texture unloadable
OpenGL error 1282 at bot beginDraw(): invalid operation
OpenGL error 1286 at top endDraw(): invalid framebuffer operation
OpenGL error 1286 at bot endDraw(): invalid framebuffer operation
The pixels array is null.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire setup() avec smooth(8), P3D et createGraphics(), puis suivez le chemin PGraphics beginDraw() qui produit les erreurs de framebuffer signalées sur un Mac M1. Comparez le comportement avec smooth(4) ; le travail est terminé lorsqu’un paramètre smooth non pris en charge est détecté ou géré sans que les erreurs OpenGL et PGraphics ne se produisent.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- java
- Domaine
- computer-graphics
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 42/100