Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

glvertex3f и glvertex3fv как преобразовать [D5, D7, XP]


msFishbein ©   (2013-03-17 03:03:00) 

Добрый день! Возник вопрос, который я пока не смогла решить.

Подгружаю в программу трехмерный куб в формате .obj, вершинами которого хочу иметь возможность управлять (изменять в пространстве их положение).


For J :=1 to M.Group[i].Faces do
  begin
    with M.Group[i].Face[J] do
    begin



      case Count of                // воспроизводим модель полигонами
        3 : glBegin(GL_TRIANGLES);
        4 : glBegin(GL_QUADS);
      else
        glBegin(GL_POLYGON);
      end;

      for K :=0 to Count-1 do
      begin
        if M.Normals > 0 then
          glNormal3fv( @M.Normal[nIndex[K]] );
        if M.TexCoords > 0 then
          glTexCoord2fv( @M.TexCoord[tIndex[K]] );
        glVertex3fv( @M.Vertex[vIndex[K]] );       // рисование вершины
      end;
      glEnd();


Нарисовать точки в каждой из вершин подгруженного объекта труда не составило, а вот чтобы впоследствии управлять ими нужно как-то преобразовать структуру
glVertex3fv( @M.Vertex[vIndex[K]] ); к виду glVertex3f(v_x[vIndex[K]],v_y[vIndex[K]],v_z[vIndex[K]]); где vIndex[K] -- номер вершины от 1 до 8.
Не могли бы вы подсказать как, а то я в принципе не очень понимаю данный синтаксис?

Спасибо!


KilkennyCat   (2013-03-17 21:43:00) [1]


> это указательна массив M.Vertex из трех элементов

это я про
> glVertex3fv( @M.Vertex[vIndex[K]] )


KilkennyCat   (2013-03-17 21:42:00) [2]


> @M.Vertex[vIndex[K]]


> я в принципе не очень понимаю данный синтаксис?

это указатель на массив M.Vertex из трех элементов, так что, скорее всего как-то так:
glVertex3f(M.Vertex[vIndex[K]],M.Vertex[vIndex[K] + 1],M.Vertex[vIndex[K] + 2])

но я могу ошибаться с индексами, так как не знаю структуру массива, и вообще не люблю опенгл, а директикс забыл, делфи удалил...


Наверх

Титульная страница Поиск, карта сайта Написать письмо