在SDL 2中绘制一个圆,但每个圆圈使用CPU很多

时间:2015-03-15 15:13:03

标签: c++ visual-c++ sdl sdl-2

我写了一个绘制实心圆的代码,但它使用了很多CPU。 事情是我逐个像素地画,半径为n的第一个外圆,半径为n-1的第二个圆,依此类推,而n不等于0。 对于每个圆形部分,我在e循环中绘制了4个像素。正如我所想,每个部分都有~Pi /(2 * R)像素,但它还不够,圆形填充错误,所以我使用了Pi /(4 * R),现在圆形填充正常。

Deg0 = 0;
Deg90 = M_PI / 2;
DegStep = Deg90 / (R * 4);
CurrDeg = Deg0;
OffsetX = R;
OffsetY = 0;
TmpR = R;
while(TmpR>0 )
{
    while(CurrDeg < Deg90)
    {
        OffsetX = cos(CurrDeg) * TmpR;
        OffsetY = sin(CurrDeg) * TmpR;
        SDL_RenderDrawPoint(Renderer, CX+(int)OffsetX, CY+(int)OffsetY);
        SDL_RenderDrawPoint(Renderer, CX-(int)OffsetY, CY+(int)OffsetX);
        SDL_RenderDrawPoint(Renderer, CX-(int)OffsetX, CY-(int)OffsetY);
        SDL_RenderDrawPoint(Renderer, CX+(int)OffsetY, CY-(int)OffsetX);
        CurrDeg+=DegStep;
    }
    CurrDeg = Deg0;
    TmpR-=1;
}

那么,有没有办法改善我的认识?

1 个答案:

答案 0 :(得分:1)

您可以使用SDL的圆绘制功能,或者您可以通过不实际使用cos和sin来优化您自己的代码。改为使用查找表。