2011-10-18 31 views
0

我不知道在哪種方式下,我們可以設置一個填充有較小方塊的平面(以便我可以做出更好的照明效果)。如何在OpenGL中使用嵌套循環來填充小平面的列表?

我繪製一個正方形代碼:

void drawSquare(float x1, float y1, float x2, float y2) { 
    glBegin(GL_QUADS); 
     glVertex3f(x1, y1, 0.0f); // The bottom left corner 
     glVertex3f(x1, y2, 0.0f); // The top left corner 
     glVertex3f(x2, y2, 0.0f); // The top right corner 
     glVertex3f(x2, y1, 0.0f); // The bottom right corner  
    glEnd(); 
} 

所以現在我怎麼可以運行一個嵌套的循環與較小的正方形的數量來填補表面?我有點不確定小方格的座標。

回答

2

計算正方形的大小並將其分成更小的塊。像這樣(未經測試):

void drawSquare(float x1, float y1, float x2, float y2, int xtiles, int ytiles) { 
    float tile_width = (x2 - x1)/xtiles; 
    float tile_height = (y2 - y1)/ytiles; 
    int x, y; 
    glBegin(GL_QUADS); 
     for (y = 0; y < ytiles; y++) { 
      for (x = 0; x < xtiles; x++) { 
       glVertex3f(x1 + x * tile_width, y1 + y * tile_height, 0.0f); // The bottom left corner 
       glVertex3f(x1 + x * tile_width, y1 + (y + 1) * tile_height, 0.0f); // The top left corner 
       glVertex3f(x1 + (x + 1) * tile_width, y1 + (y + 1) * tile_height, 0.0f); // The top right corner 
       glVertex3f(x1 + (x + 1) * tile_width, y1 + y * tile_height, 0.0f); // The bottom right corner  
      } 
     } 
    glEnd(); 
} 
+0

什麼是xtile和ytile? – antiopengl

+0

沿x和y軸的細分數量。那就是如果你把'xtiles'設置爲4,將'ytiles'設置爲8,你將得到32個方格。 – user786653