1

我无法使用 CefSharp 有界对象捕获动画的每一帧。看起来返回的位图Browser.ScreenshotAsync并不总是正确同步。这是我的 javascript 渲染函数,它以恒定的速率水平移动 WebGL 对象:

function animate() {
    object.position.x -= 100; 
    renderer.render(scene, camera);
    cefBountObject('animate()');
}

这是我的 CEF 有界对象:

public void cefBountObject(string callback) {
    Browser.ScreenshotAsync().ContinueWith((task) => {
        task.Result.Save(string.Format("{0:D4}.png", frameNumber++));
        Browser.EvaluateScriptAsync(callback);
    });
}

这确实会保存序列中的每个文件而不会跳过:0000.png、0001.png、0002.png 等。但是,有些图像文件是重复的,有些图像文件会跳帧。我想我遇到了一个不同步的线程问题,但我看不出它可能在哪里。实际上,如果我在最后一行设置断点Browser.EvaluateScriptAsync(callback);并单步执行动画,则所有文件都按顺序正确生成。

4

0 回答 0