我写了一个绘制实心圆的代码,但它使用了很多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;
}
那么,有没有办法改善我的认识?
答案 0 :(得分:1)
您可以使用SDL的圆绘制功能,或者您可以通过不实际使用cos和sin来优化您自己的代码。改为使用查找表。