0

我不知道我们可以通过哪种方式设置一个填充有较小正方形的平面(这样我可以做出更好的照明效果)。

我绘制单个正方形的代码是:

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();
}

那么现在我如何运行一个嵌套循环来用一些较小的正方形填充表面呢?我有点不确定小方块的坐标。

4

1 回答 1

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();
}
于 2011-10-18T06:01:43.983 回答