processing / processing/processing4
Add a PGraphics/framebuffer stack ala `createFrameBuffer()`
Nessuno ha ancora preso questa issue.
- Lingua principale
- Java
- Stelle
- 497
- Fork
- 183
- Merge medio
- 4h 39m
- PR unite (30g)
- 3
Descrizione
Created by: scudly
I would like to have a PGraphics / framebuffer stack that works analogously to the matrix stack such that all the default drawing functions apply to the framebuffer currently at the top of the stack without having to reference it explicitly.
All too often, I write code that draws some complex object to the screen and then later end up wanting to draw it to a PGraphics instead so that I can, for instance, generate the image at a much higher resolution. This requires re-writing the code to pass in a PGraphics parameter (or using a global variable) and changing all of the drawing functions to use that PGraphics instead, such as line() to pg.line(). It's messy, error-prone (I always seem to miss changing a width to pg.width), and clutters up the code with all the pg. prefixes.
A far simpler mechanism would use a framebuffer stack with a pushFB( PGraphics pg ) / popFB() pair such that all drawing commands (and width and height constants) apply only to the framebuffer at the top of the stack. pushFB( pg ) would call endDraw() on the current top of stack, push pg on the stack, and then pg.beginDraw(). popFB() would endDraw() the top FB, pop it from the stack, and beginDraw() the new top. The stack is initialized with the default framebuffer and popping it either does nothing or throws an error.
All drawing functions would then be modified (entirely internally and invisible to the users, without any changes to the current API) to apply to the top-of-stack framebufffer. Anyone not using the FB stack wouldn't even know it's there, exactly analogous with the matrix stack.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia individuando lo stack delle matrici esistente e il ciclo di vita del disegno di PGraphics, in particolare beginDraw() e endDraw(). Traccia il modo in cui le funzioni di disegno predefinite e width/height selezionano attualmente il framebuffer predefinito. Il lavoro è completato quando uno stack pushFB()/popFB() applica tali operazioni al framebuffer in cima allo stack, preservando il comportamento esistente quando non viene utilizzato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- java
- Ambito
- computer-graphics
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100