processing / processing/processing4

Add a PGraphics/framebuffer stack ala `createFrameBuffer()`

Abierto
#726 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

enhancement
Lenguaje dominante
Java
Estrellas
494
Forks
183
Merge medio
4 h 39 min
PR fusionados (30 d)
3

Descripción

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.

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza localizando la pila de matrices existente y el ciclo de vida de dibujo de PGraphics, especialmente beginDraw() y endDraw(). Rastrea cómo las funciones de dibujo predeterminadas y width/height seleccionan actualmente el framebuffer predeterminado. Se considera terminado cuando una pila pushFB()/popFB() aplica esas operaciones al framebuffer superior, preservando el comportamiento existente cuando no se utiliza.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
java
Área
computer-graphics
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.