Показать сообщение отдельно
  #8  
Старый 08.04.2008, 15:34
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Извини, неправильно понял.
Когда я изучал построение в трехмерном пространстве, нашел метод построения OBJ файлов.
Может когданибудь пригодится.
Вот ссылка: http://narod.ru/disk/65986000/ShaderLoader.pas
Кстати о квадратах и кубиках
Код:
rocedure TObjectConstructor.Quadrangle(x1,y1,z1,
                            x2,y2,z2,
                            x3,y3,z3,
                            x4,y4,z4:Single);
begin
  glTexCoord2f(0,0);
  glVertex3f(x1,y1,z1);
  glTexCoord2f(0,1);
  glVertex3f(x2,y2,z2);
  glTexCoord2f(1,0);
  glVertex3f(x3,y3,z3);
  glTexCoord2f(1,1);
  glVertex3f(x4,y4,z4);
end;

procedure TObjectConstructor.DrawBox(x,y,z,xWidth,yWidth,zWidth:Single);
begin 
  glBegin(GL_QUADS);
    glNormal3f(-1,0,0);
    Quadrangle(x,y,z+zWidth,x,y+yWidth,z+zWidth,x,y+yWidth,z,x,y,z);
    glNormal3f(1,0,0);
    Quadrangle(x+xWidth,y,z+zWidth,x+xWidth,y+yWidth,z+zWidth,
               x+xWidth,y+yWidth,z,x+xWidth,y,z);
    glNormal3f(0,0,-1);
    Quadrangle(x,y,z,x,y+yWidth,z,x+xWidth,y+yWidth,z,x+xWidth,y,z);
    glNormal3f(0,0,1);
    Quadrangle(x,y,z+zWidth,x,y+yWidth,z+zWidth,x+xWidth,y+yWidth,
               z+zWidth,x+xWidth,y,z+zWidth);
    glNormal3f(0,-1,0);
    Quadrangle(x,y,z,x,y,z+zWidth,x+xWidth,y,z+zWidth,x+xWidth,y,z);
    glNormal3f(0,1,0);
    Quadrangle(x,y+yWidth,z,x,y+yWidth,z+zWidth,x+xWidth,y+yWidth,
               z+zWidth,x+xWidth,y+yWidth,z);
  glEnd;
end;
procedure TObjectConstructor.DrawGrids(GridAmp:integer;a,b,c:Boolean);
var
  i:Integer;
begin
  if a then
  begin
    for i:=-GridAmp to GridAmp do
    begin
      if i<>0 then
        glColor3f(0.7,0.7,0.7)
      else
        glColor3f(1,0,0);
      glBegin(GL_LINES);
      glVertex3f(-GridAmp,i,0);
      glVertex3f(GridAmp,i,0);
      glEnd;
      if i<>0 then
        glColor3f(0.7,0.7,0.7)
      else
        glColor3f(0,1,0);
      glBegin(GL_LINES);
      glVertex3f(i,-GridAmp,0);
      glVertex3f(i,GridAmp,0);
      glEnd;
    end;
  end;

  if b then
  begin
    for i:=-GridAmp to GridAmp do
    begin
      if i<>0 then
        glColor3f(0.7,0.7,0.7)
      else
        glColor3f(0,1,0);
      glBegin(GL_LINES);
      glVertex3f(0,-GridAmp,i);
      glVertex3f(0,GridAmp,i);
      glEnd;
      if i<>0 then
        glColor3f(0.7,0.7,0.7)
      else
        glColor3f(0,0,1);
      glBegin(GL_LINES);
      glVertex3f(0,i,-GridAmp);
      glVertex3f(0,i,GridAmp);
      glEnd;
    end;
  end;

  if c then
  begin
    glBegin(GL_LINES);
    for i:=-GridAmp to GridAmp do
    begin
      if i<>0 then
        glColor3f(0.7,0.7,0.7)
      else
        glColor3f(1,0,0);
      glBegin(GL_LINES);
      glVertex3f(-GridAmp,0,i);
      glVertex3f(GridAmp,0,i);
      glEnd;
      if i<>0 then
        glColor3f(0.7,0.7,0.7)
      else
        glColor3f(0,0,1);
      glBegin(GL_LINES);
      glVertex3f(i,0,-GridAmp);
      glVertex3f(i,0,GridAmp);
      glEnd;
    end;
  end;
end;

procedure TObjectConstructor.DrawAxis(GridAmp:integer;a,b,c:Boolean);
begin
  if a then
  begin
    glColor3f(1,0,0);
    glBegin(GL_LINES);
      glVertex3f(-GridAmp,0,0);
      glVertex3f(GridAmp,0,0);
    glEnd;
  end;

  if b then
  begin
    glColor3f(0,1,0);
    glBegin(GL_LINES);
      glVertex3f(0,-GridAmp,0);
      glVertex3f(0,GridAmp,0);
    glEnd;
  end;

  if c then
  begin
    glColor3f(0,0,1);
    glBegin(GL_LINES);
      glVertex3f(0,0,-GridAmp);
      glVertex3f(0,0,GridAmp);
    glEnd;
  end;
end;
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием