gpt4 book ai didi

javascript - 事件处理程序中的 webGL 绘制似乎清除了 Canvas

转载 作者:行者123 更新时间:2023-11-30 12:05:01 31 4
gpt4 key购买 nike

这是来自 webglfundamentals.com 的一个经过非常轻微修改的介绍性示例.

http://codepen.io/anon/pen/mVYrZd

在 Canvas 上按下鼠标以绘制一个新矩形。先前绘制的矩形被清除。为什么? for 循环和事件处理程序正在调用完全相同的函数。

相关代码:

// Draw 50 random rectangles in random colors.
// They draw on top of each other, as expected.
for ( var i = 0; i < 50; i += 1 ) {
drawARandomRectangle( gl );
}

// Draw one rectangle on the canvas in response to a canvas mousedown.
// The buffer seems to be cleared, only a single new rectangle shows.
canvas.addEventListener("mousedown", function( e ){
drawARandomRectangle( gl );
});

我发现使用 preserveDrawingBuffer 初始化上下文会导致 mousedown 矩形绘制在现有矩形的顶部:

var gl = canvas.getContext( "webgl", {
preserveDrawingBuffer: true
} );

但我也读到过 preserveDrawingBuffer 的性能很差,它并不能完全解释为什么循环内调用和 mousedown 调用呈现不同。

最佳答案

使用preserveDrawingBuffer: true

var gl = canvas.getContext( "webgl", { antialias: false, preserveDrawingBuffer: true} )

详情在这里WebGL drawing failure after mouse click

关于javascript - 事件处理程序中的 webGL 绘制似乎清除了 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35493509/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com