Народный учебник по OpenGL


Урок 11. Эффект "флага" на OpenGL - часть 4


 

float_x = float(x)/44.0f;         // создать значение X как float

float_y = float(y)/44.0f;         // создать значение Y как float

float_xb = float(x+1)/44.0f;      // создать значение X как float плюс 0.0227f

float_yb = float(y+1)/44.0f;      // создать значение Y как float плюс 0.0227f

 

Мы используем четыре переменных выше для координат текстуры. Каждый наш полигон (квадрат в сетке) имеет секцию размером 1/44 x 1/44 с отображенной на нее текстурой. В начале циклов задается нижняя левая вершина секции, и потом мы просто добавляем к этой вершине соответственно 0 или 1 для получения трех остальных вершин (т.е. x+1 или y+1 будет правая верхняя вершина).

 

// первая координата текстуры (нижняя левая)

         glTexCoord2f( float_x, float_y);  

         glVertex3f( points[x][y][0], points[x][y][1], points[x][y][2] );

                 

      // вторая координата текстуры (верхняя левая)

         glTexCoord2f( float_x, float_yb );

         glVertex3f( points[x][y+1][0], points[x][y+1][1], points[x][y+1][2]);

 

// третья координата текстуры (верхняя правая)                

         glTexCoord2f( float_xb, float_yb );

glVertex3f( points[x+1][y+1][0], points[x+1][y+1][1], points[x+1][y+1][2]);

                 

            // четвертая координата текстуры (нижняя правая)

         glTexCoord2f( float_xb, float_y );

         glVertex3f( points[x+1][y][0], points[x+1][y][1], points[x+1][y][2]);

      }

}

glEnd();                                  // закончили с квадратами

 

Строки выше просто делают OpenGL-вызовы для передачи всех данных, о которых мы говорили. Четыре отдельных вызова каждой функции glTexCoord2f() и glVertex3f(). Продолжим. Заметьте – квадраты рисуются по часовой стрелке. Это означает, что сторона, которую вы видите, вначале будет задней. Задняя заполнена. Передняя состоит из линий.

 

Если бы вы рисовали против часовой стрелки, то сторона, которую вы бы видели вначале, была бы передней. Значит, вы увидели бы текстуру, выглядящую как сетка, (ты написал: типа сетки) вместо заполненной текстурой поверхности.




Начало  Назад  Вперед



Книжный магазин