Рендер (отрисовка) простейщего обьекта

Автор: zombie
Комментарии к записи Рендер (отрисовка) простейщего обьекта отключены

Рассмотрим функцию вывода нашего объекта:

void DEN_Obj::Render(int text)
{
int l_index;

glPushMatrix();
glTranslatef(Position.x,Position.y,Position.z);

glRotatef(Rotation.x,1.0,0.0,0.0);
glRotatef(Rotation.y,0.0,1.0,0.0);
glRotatef(Rotation.z,0.0,0.0,1.0);

if (text==1)
{
glActiveTextureARB(GL_TEXTURE0_ARB);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, id_texture);
}
else
{
glDisable(GL_TEXTURE_2D);
}

glBegin(GL_TRIANGLES);
for (l_index=0;l_index<polygons_col;l_index++)
{
//----------------- ПЕРВАЯ ВЕРШИНА -----------------
// координаты текстуры первой вершины
glTexCoord2f( MapCoord[ Polygon[l_index].a ].u,
MapCoord[ Polygon[l_index].a ].v);
// координаты первой вершины
glVertex3f( Vertex[ Polygon[l_index].a ].x*Scale,
Vertex[ Polygon[l_index].a ].y*Scale,
Vertex[ Polygon[l_index].a ].z*Scale);

//----------------- ВТОРАЯ ВЕРШИНА -----------------
// координаты текстуры второй вершины
glTexCoord2f( MapCoord[ Polygon[l_index].b ].u,
MapCoord[ Polygon[l_index].b ].v);
// координаты второй вершины
glVertex3f( Vertex[ Polygon[l_index].b ].x*Scale,
Vertex[ Polygon[l_index].b ].y*Scale,
Vertex[ Polygon[l_index].b ].z*Scale);

//----------------- ТРЕТЬЯ ВЕРШИНА -----------------
// координаты текстуры третьей вершины
glTexCoord2f( MapCoord[ Polygon[l_index].c ].u,
MapCoord[ Polygon[l_index].c ].v);
// координаты третьей вершины
glVertex3f( Vertex[ Polygon[l_index].c ].x*Scale,
Vertex[ Polygon[l_index].c ].y*Scale,
Vertex[ Polygon[l_index].c ].z*Scale);

}
glEnd();

glPopMatrix();
};

Функция имеет один входящий параметр text, который служит для определения - отрисовывать объект с наложенной текстурой или без текстуры.

Далее краткое пояснение работы функции:

1. Сохраняем мировые координаты
2. Устанавливаем координаты и углы обьекта
3. Определяем с текстурой или без будет выводиться наш объект и соответственно инициализируем текстуру
4. В цикле проходим по всем полигонам, получаем координаты точек, текстуры, и выводим их.
5. Восстанавливаем мировые координаты

Комментарии закрыты.