2014-12-02 101 views
-1

鑑於代碼(從Scan-line fill OpenGL/GLUT algorithm in C++截取):C++的OpenGL掃描線算法

void scanfill(float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4) 
{ 
    int le[500],re[500],i,j; 

    for(i=0;i<500;i++) 
     le[i]=500,re[i]=0; 

    edgedetect(x1,y1,x2,y2,le,re); 
    edgedetect(x2,y2,x3,y3,le,re); 
    edgedetect(x3,y3,x4,y4,le,re); 
    edgedetect(x4,y4,x1,y1,le,re); 

    for(j=0;j<500;j++) 
    { 
     if(le[j]<=re[j]) 
      for(i=le[j];i<re[j];i++) 
       draw_pixel(i,j); 
    } 
} 

哪些re[500]le[500]數組?爲什麼500?

回答

3

它們是左邊緣和右邊緣緩衝區。它們存儲要在每條水平掃描線上填充的最小和最大X座標。

500只是在glutInitWindowSize(500,500);中指定的窗口高度。