processing/processing4

noStroke makes PShape.setTexture crash (P2D)

Open

#695 geöffnet am 27. März 2023

Auf GitHub ansehen
 (1 Kommentar) (0 Reaktionen) (0 zugewiesene Personen)Java (176 Forks)auto 404
help wantedopengl

Repository-Metriken

Stars
 (439 Stars)
PR-Merge-Metriken
 (PR-Metriken ausstehend)

Beschreibung

Created by: TidensBarn

I had inexplicable crashes when using textures on PShapes that almost made me loose my will to live until I finally found the cause: If I create a PShape in "noStroke" state, setTexture will work the first time, but when I then try to set a different texture and redraw, it'll crash:

    PShape shape;
    
    void settings() {
      size(400, 400, P2D); 
    }
    
    void setup() {
    }
  
    void draw() {

      noStroke(); // Remove this, no crash

      shape = createShape(RECT, 0, 0, 200, 200);
      
      PImage p1 = loadImage("img1.png");
      shape.setTexture(p1);
      shape(shape);
      
      PImage p2 = loadImage("img2.png"); // p2 needs to be a different size from p1
      shape.setTexture(p2);
      shape(shape); // Crash!
    }

It's an ArrayIndexOutofBoundsException in PShapeOpenGL, line 843, because the field "firstLineVertex" happens to be -1... Here's a sketch with images: crash.zip Tested on Win 10, Processing 4.2

Contributor Guide