그래서 HTML5 캔버스에서 디자인을 렌더링하는 것이 매우 빠르다는 인상을 받았습니다. 다음 코드를 사용하고 있는데 렌더하는 데 1 초도 채 걸리지 않을 것이라고 생각하지만 약 2 분이 걸립니다.HTML5 캔버스에서 디자인하기 - 렌더링 속도를 높이는 방법
코드는 :
<script>
var canvas = document.getElementById("canvas")
ctx = canvas.getContext('2d')
maxW = window.innerWidth
maxH = window.innerHeight
x = -1
numLeft = 15
//maxW = 300
//maxH = 300
canvas.setAttribute("width", maxW)
canvas.setAttribute("height", maxH)
ctx.fillStyle = "rgba(0,0,0,.5)"
for(var j = 0; j < maxH; j++){
for(var i = 0; i < maxW; i++){
if(numLeft < 0){
if(x == -1){
ctx.fillStyle = "rgba(127,127,127,.5)"
//numLeft += 12
numLeft += 5
}
else{
ctx.fillStyle = "rgba(0,0,0,.5)"
//numLeft += 24
numLeft += 15
}
x *= -1
}
ctx.fillRect(i,j,i+1,j+1)
numLeft--
}
//numLeft -= 5 this one's crazy :D
numLeft -= 3
}
는 검은 색과 회색에 대각선 줄무늬를 그려하기로했다. 그러나 다시 말하자면, 영원히 렌더링을하고 있으며 대부분의 사람들의 브라우저를 망칠 것입니다. 이 속도를 높이는 방법에 대한 힌트가 있습니까?
당신이 의도했는지 모르겠지만'drawRect (x, y, 1, 1)'이 한 픽셀을 채우고 있습니다. 그것은'(x, y, w, h)'입니다. 이것은 당신이 현재 많은 * 더 많은 픽셀 (너비'i + 1'과 높이'j + 1')을 그리기 때문에 빠른 속도 향상을 가져옵니다. 그래서 당신이 페인팅하는 픽셀의 양은 2 차적으로 커집니다. – pimvdb
동의,이 jsFiddle의 차이점을 확인할 수 있습니다. http://jsfiddle.net/luisperezphd/eY82y/ –