Closed
Description
Most appropriate sub-area of p5.js?
- Accessibility
- Color
- Core/Environment/Rendering
- Data
- DOM
- Events
- Image
- IO
- Math
- Typography
- Utilities
- WebGL
- Build process
- Unit testing
- Internationalization
- Friendly errors
- Other (specify if possible)
p5.js version
1.9.3
Web browser and version
All
Operating system
All
Steps to reproduce this
Steps:
- Create a framebuffer at a different size than the main canvas
- Create a camera for it
- Call
ortho()
on the camera - Draw something on the framebuffer
- It gets scaled incorrectly
This is due to ortho()
using the _renderer
to get its width and height:
Lines 2242 to 2246 in f62fc6d
p5.FramebufferCamera
has a this.fbo
property, so probably in ortho
every instance of _renderer
should be replaced with (this.fbo || this._renderer)
.
Snippet:
let fbo
let fboCam
function setup() {
createCanvas(400, 400, WEBGL);
fbo = createFramebuffer({ width: 200, height: 400 })
push()
fboCam = fbo.createCamera()
pop()
fboCam.ortho()
}
function draw() {
background(220);
fbo.draw(() => {
setCamera(fboCam)
rectMode(CENTER)
rect(0, 0, fbo.width, fbo.height)
})
imageMode(CENTER)
image(fbo, 0, 0)
}
Live: https://editor.p5js.org/davepagurek/sketches/s2u8gyUSb
Actual behaviour: the framebuffer has a white rectangle 1/4 of the width of the main canvas instead of 1/2:
Expected behaviour: the framebuffer has a white rectangle half the width of the main canvas