亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 p5 中將 createGraphics() 與 WEBGL 一起使用時出現奇怪的行為

在 p5 中將 createGraphics() 與 WEBGL 一起使用時出現奇怪的行為

拉丁的傳說 2023-08-24 17:51:19
我正在使用 p5.js,并且在屏幕外圖形緩沖區中使用 WebGL 渲染器時遇到奇怪的行為。這是一個簡單的示例,它在畫布上繪制模型并將其縮放至 101% 大小。這按預期工作。每次重新繪制框架時模型都保持靜止。//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);}當我使用“createGraphics()”將 webGL 場景渲染到 p5.Graphics 離屏圖形緩沖區時,會發生奇怪的行為。我這樣做是為了進一步處理 2D 畫布上的渲染幀,如下所示://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);}每次重新繪制框架時,模型都會不斷按比例放大。我不確定為什么會發生這種情況,或者是什么導致它的行為與我的第一個示例中的行為不同。
查看完整描述

1 回答

?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

該draw函數位于<main-canvas>.push()后端<main-canvas>.pop(),以便每次draw()運行時都會重置轉換。


(這<main-canvas>是我所說的占位符,它在 p5js 庫的真實后端上絕對是不同的,但為了簡單起見,這就是我所說的。)


所以你需要push和pop模型的圖形對象進行交互。


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

}

查看完整回答
反對 回復 2023-08-24
  • 1 回答
  • 0 關注
  • 206 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號