拉丁的傳說(shuō)
2023-08-24 17:51:19
我正在使用 p5.js,并且在屏幕外圖形緩沖區(qū)中使用 WebGL 渲染器時(shí)遇到奇怪的行為。這是一個(gè)簡(jiǎn)單的示例,它在畫(huà)布上繪制模型并將其縮放至 101% 大小。這按預(yù)期工作。每次重新繪制框架時(shí)模型都保持靜止。//working WEBGL createCanvas examplelet icosa;function preload() { icosa = loadModel('model.obj', true);}function setup() { createCanvas(800, 800, WEBGL);}function draw() { background(0); //the model remains at 1.01 scale every time the frame is re-drawn, as expected. scale(1.01); model(icosa);}當(dāng)我使用“createGraphics()”將 webGL 場(chǎng)景渲染到 p5.Graphics 離屏圖形緩沖區(qū)時(shí),會(huì)發(fā)生奇怪的行為。我這樣做是為了進(jìn)一步處理 2D 畫(huà)布上的渲染幀,如下所示://broken WEBGL createGraphics examplelet icosa;let rend3d;function preload() { icosa = loadModel('model.obj', true);}function setup() { rend3d = createGraphics(800, 800, WEBGL); createCanvas(800, 800);}function draw() { rend3d.background(0); //the model continuously scales up every time the frame is re-drawn! rend3d.scale(1.01); rend3d.model(icosa); background(0); image(rend3d, 0,0, 800, 800);}每次重新繪制框架時(shí),模型都會(huì)不斷按比例放大。我不確定為什么會(huì)發(fā)生這種情況,或者是什么導(dǎo)致它的行為與我的第一個(gè)示例中的行為不同。
1 回答

qq_笑_17
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊
該draw函數(shù)位于<main-canvas>.push()后端<main-canvas>.pop(),以便每次draw()運(yùn)行時(shí)都會(huì)重置轉(zhuǎn)換。
(這<main-canvas>是我所說(shuō)的占位符,它在 p5js 庫(kù)的真實(shí)后端上絕對(duì)是不同的,但為了簡(jiǎn)單起見(jiàn),這就是我所說(shuō)的。)
所以你需要push和pop模型的圖形對(duì)象進(jìn)行交互。
function draw() {?
? ? rend3d.background(0);
? ? rend3d.push(); // Added line here
? ? rend3d.scale(1.01);
? ? rend3d.model(icosa);
? ? background(0);
? ? image(rend3d, 0,0, 800, 800);
? ? rend3d.pop(); // Added line here
}
添加回答
舉報(bào)
0/150
提交
取消