processing / processing/processing4

Drawing the same SVG with different stroke weights causes rendering bug with P2D renderer

未关闭
#817 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

bug core
主要语言
Java
星标
494
派生
183
平均合并
4 小时 39 分钟
30 天内合并 PR
3

描述

Created by: cadin

Description

When drawing an SVG shape (with style disabled) using the P2D renderer, the rendering will glitch if the shape is drawn more than once with a different stroke weight.

Expected Behavior

The shape should appear on the canvas at different stroke weights.

Current Behavior

The first instance of the shape appears as expected. Subsequent shapes (drawn after changing strokeWeight) are drawn with a glitched stroke.

Steps to Reproduce

  1. Set up sketch with P2D renderer.
  2. Load an SVG into a PShape and call disableStyle() on it.
  3. Draw the shape to the screen once, then change strokeWeight and draw again.

Example code (from this repo with SVG file included):

PShape aSVG;

void setup() {
  size(600, 300, P2D); // changing to default renderer works

  aSVG = loadShape("A.svg");
  aSVG.disableStyle();
}

void draw() {
  background(255);
  scale(3);

  strokeWeight(1);
  shape(aSVG); // removing this first shape works

  strokeWeight(3); // removing this stroke change works
  shape(aSVG, 100, 0);
}

Your Environment

  • Processing version: 4.3
  • Operating System and OS version: Mac OS 14.2.1 (Intel)

Workarounds

  • Using the default renderer works as expected
  • Drawing the shape only once (with any stroke weight) works as expected
  • Drawing the shape multiple times without changing stroke weight works as expected
  • Loading the same SVG into a separate PShape instance to render as the second graphic works as expected

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

先从提供的 P2D sketch 和 SVG 复现开始,然后跟踪 P2D renderer 对带有 disabled-style 的重复 PShape 绘制以及不断变化的 strokeWeight 值的处理。通过复现该 sketch 并验证两个渲染出的图形都使用了所请求的 strokeWeight 值且没有故障,确认修复有效。

由索引模型根据 Issue 内容生成。

评估

技术栈
java
领域
computer-graphics
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。