Canvas 画布上的性能问题绘图

Canvas 画布上的性能问题绘图,canvas,bitmap,tizen,Canvas,Bitmap,Tizen,我有一个本地游戏,其中我在窗体的画布上绘制了几个位图。 问题是,如果我在整个画布上绘制背景位图,它会大大减慢绘制过程。 我以我的游戏形式的onDraw方法进行: result GameForm::OnDraw() { result r = E_SUCCESS; pCanvas->SetBackgroundColor(*backgroundColor); pCanvas->Clear(*rect); //this increases time of d

我有一个本地游戏,其中我在窗体的画布上绘制了几个位图。
问题是,如果我在整个画布上绘制背景位图,它会大大减慢绘制过程。

我以我的游戏形式的onDraw方法进行:

result GameForm::OnDraw() {
    result r = E_SUCCESS;
    pCanvas->SetBackgroundColor(*backgroundColor);
    pCanvas->Clear(*rect);

    //this increases time of drawing from about 25ms to 50ms
    //  r = pCanvas->DrawBitmap(Rectangle(0, 0, this->GetWidth(), this->GetHeight()), *pBackgroundBitmap);

    //drawing some (up to 60-80) small bitmaps on pCanvas
    pLevel->draw(pCanvas);

    return r;
}
我使用位图\像素\格式\ ARGB8888选项解码图像。


有没有办法不使用openG更有效地绘制背景位图?

每帧绘制一幅背景图像不会很好。考虑1280x1024的宽度和高度,888格式的背景位图将是1280×1024×3=3932160字节~3.75 Mb/< 我会有2个画布,下面的一个会让背景画一次,上面的一个会被清除,并在每一帧重新绘制,允许背景通过未绘制的部分显示(透明)

下面是一个HTML5+画布示例

JAVASCRIPT

var bg = document.getElementById("bg");
var bgctx = bg.getContext("2d");
bgctx.fillStyle = "yellow";
bgctx.fillRect(0, 0, 300, 300);

var game = document.getElementById("game");
var ctx = game.getContext("2d");
window.setInterval(function() {
    ctx.clearRect(0, 0, 300, 300);
    ctx.fillStyle = "red";
    ctx.fillText("" + Date.now(), Math.floor(Math.random() * 200), Math.floor(Math.random() * 200));
}, 16);
HTML


谢谢您的回答,但我不知道如何在窗体上显示2个画布。我通过调用GetCanvasN()获得窗体的画布,并将其用于绘图。我还尝试添加带有背景位图的屏幕大小标签,但效果更糟。
<canvas id="bg" width="300" height="300"></canvas>
<canvas id="game" width="300" height="300"></canvas>
canvas {
    position:absolute;
    left:0;top:0;right:0;bottom:0;
    padding:0;margin:0;
}