Я использую объект Canvas с javascript. Просто сделайте несколько тестов, чтобы узнать, как быстро я могу установить пиксели в контуре рисования.Оптимальная скорость рисования пикселей?
На mac, он отлично работает в FF, сафари, хром. В окнах я получаю мерцающий эффект на FF и хром. Похоже, что реализация canvas на окнах отличается от макинтоша для разных браузеров? (не уверен, что это правда).
Это базовый код, я использую, чтобы сделать рисунок (взято из статьи ниже - я оптимизировано ниже, чтобы затянуть петлю дро, он работает довольно гладко сейчас):
var canvas = document.getElementById('myCanvasElt');
var ctx = canvas.getContext('2d');
var canvasData = ctx.getImageData(0, 0, canvas.width, canvas.height);
for (var x = 0; x < canvasData.width; x++) {
for (var y = 0; y < canvasData.height; y++) {
// Index of the pixel in the array
var idx = (x + y * canvas.width) * 4;
canvasData.data[idx + 0] = 0;
canvasData.data[idx + 1] = 255;
canvasData.data[idx + 2] = 0;
canvasData.data[idx + 3] = 255;
}
}
ctx.putImageData(canvasData, 0, 0);
снова, браузеры на окнах будут мерцать немного. Похоже, что реализация canvas пытается очистить холст до белого, прежде чем произойдет следующая операция рисования (этого не происходит на Mac). Мне интересно, есть ли параметр, который я могу изменить в объекте Canvas, чтобы изменить это значение (двойная буферизация, очистить до розыгрыша и т. Д.)?
Это статья я использую в качестве ссылки: http://hacks.mozilla.org/2009/06/pushing-pixels-with-canvas/
Благодаря
Да, я думаю, что с этим ничего не поделаешь - нет способа сказать Canvas изменить способ, которым браузер реализует перерисовку, не так ли? Как символ canvas.pleaseDoubleBuffer = "true"? – user246114
Или я имею в виду - кажется, что полотно на некоторых реализациях стирается до белого после каждой ничьей - если это можно отключить, все будет идеально. Не думайте, что есть что-то подобное. – user246114
К сожалению, я не знаю, как управлять тем, как canvas использует базовые API OS. –