Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Движение объекта по точкам(OpenGl).Подскажите. 
:(
    Опции темы
spamER
Дата 8.4.2009, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 14.11.2008

Репутация: нет
Всего: 1



Всем привет. У меня возникла проблема, может кто то подскажет:
рисую, например, квадрат при помощи OpenGL и мене необходимо по заданным точка(вводятся пользователем, допустим 5 точек) прорисовать движение квадрата по этим точка. Вопрос, как это сделать?

Вот сделал я движение квадрата, но здесь я просто увеличиваю координаты X и Y одной точки. Подскажите пожалуйста как реализовать движение,например, по 5 точкам или если не тяжело скажите что мене надо исправить в своем коде.


P.S. OpenGL начал учить недавно. Так что не ругайтесь если че не так.

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OpenGL, ExtCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
    DC: HDC;
    hrc: HGLRC;
    procedure PixelFormat;
    procedure Paint(x,y:real);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  ox,oy:real;
implementation

{$R *.dfm}

procedure TForm1.Paint(x,y:real);
var
 ps:TPaintStruct;
begin
glMatrixMode(GL_PROJECTION);
glLoadIdentity( ); 
if width <= height then
  glOrtho (-2, 2, -2*height/width, 2*height/width, -10.0, 10.0)
 else
  glOrtho (-2*width/height, 2*width/height, -2, 2, -10.0, 10.0);
glViewport(0, 0, width, height);

  BeginPaint(Handle,ps);

  glEnable(GL_DEPTH_TEST);

 glClearColor(1,0.5,0.5,1);
 glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
 glColor3f (0.0, 1.0, 0.0);

 glTranslatef(x,y,0.0);//Вот это выполняет движение квадрата.

 glBegin(GL_QUAD_STRIP);
  glVertex3f(0.3,0.3,0.3);
  glVertex3f(0.3,-0.3,0.3);
  glVertex3f(-0.3,0.3,0);
  glVertex3f(-0.3,-0.3,0);
 glEnd;
 glDisable(GL_DEPTH_TEST);

 glFlush();
 swapBuffers(dc);
 EndPaint(Handle,ps);
end;


procedure TForm1.PixelFormat;
var
 nPixelFormat:Integer;
 pfd:TPixelFormatDescriptor;
begin
 FillChar(pfd,Sizeof(pfd),0);
pfd.nSize:=sizeof(pfd); 
pfd.nVersion:=1;
 pfd.dwFlags:=PFD_DOUBLEBUFFER+PFD_SUPPORT_OPENGL+
      PFD_DRAW_TO_WINDOW; 
 pfd.iPixelType:=PFD_TYPE_RGBA;
 pfd.cColorBits:=24; 
 pfd.cAlphaBits:=64;
 pfd.cAccumBits:=64;
 pfd.cDepthBits:=32;
 pfd.cStencilBits:=64;
 pfd.iLayerType:=PFD_MAIN_PLANE; 
 nPixelFormat:=ChoosePixelFormat(DC,@pfd);
 if nPixelFormat<>0 then
  SetPixelFormat(DC,nPixelFormat,@pfd);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   DC:= GetDC(Handle);
   PixelFormat;
   hrc:= wglCreateContext(DC);
   wglMakeCurrent(DC,hrc);
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
   Paint(ox,oy);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
   wglMakeCurrent(0,0);
   wglDeleteContext(hrc);
   ReleaseDC(handle,DC);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   ox:= ox+0.2;
   oy:= oy+0.2;
   Paint(ox,oy);
end;

end.


PM MAIL   Вверх
spamER
Дата 9.4.2009, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 14.11.2008

Репутация: нет
Всего: 1



Народ, ну может подскажите.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0379 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.