在SDL 2中画一个圆,但是每个圆使用CPU很多

Drawing a circle in SDL 2, but each circle uses CPU a lot

我写了一个绘制实心圆的代码,但它经常使用 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;
}

那么,有什么方法可以提高我的悟性吗?

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