WebGL Error Triggered by `noSmooth()` Invocation Between Framebuffer Creation and Drawing on Framebuffer
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 24k
- Forks
- 3.8k
- Avg merge
- 3d 16h
- Merged PRs (30d)
- 25
Description
Problem
In WEBGL mode, invoking the noSmooth() function specifically between the creation of a framebuffer and performing drawing operations on said framebuffer results in the following error:
WebGL: INVALID_OPERATION: bindTexture: object does not belong to this context
This issue appears to be browser-specific; it has been observed in Chrome, but not in Firefox.
Reproduction Steps
Here's a minimal example that demonstrates the issue:
let testBuffer;
function setup() {
createCanvas(400, 400, WEBGL);
testBuffer = createFramebuffer();
// 🔴 Using noSmooth() between creating the buffer and drawing on the buffer triggers the error
noSmooth();
testBuffer.begin();
circle(0, 0, 200);
testBuffer.end();
}
function draw() {
background(150);
texture(testBuffer);
orbitControl();
box(200);
}
Expected Behavior
Calling noSmooth() between framebuffer creation and drawing should not introduce WebGL errors.
Actual Behavior
An error is thrown, specifically: WebGL: INVALID_OPERATION: bindTexture: object does not belong to this context.
Environment
- p5.js Version: 1.7.x Beta (cc @davepagurek)
- Browser: Chrome 116 (Error observed), Firefox 116.0.3 (No error observed)
- OS: Windows 10
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by running the minimal reproduction in Chrome and Firefox, then inspect the implementations of noSmooth(), createFramebuffer(), and the framebuffer begin()/end() entry points. Trace how noSmooth() affects the WebGL context and framebuffer texture, and verify that the example completes without an INVALID_OPERATION error in Chrome.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- computer-graphics
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100