Компьютерный форум

Компьютерный форум (http://www.hardforum.ru/)
-   Программирование графики (http://www.hardforum.ru/f157/)
-   -   Как дальше писать эту программу( не доходит... (http://www.hardforum.ru/t89651/)

Nasya 31.10.2011 04:53

Как дальше писать эту программу( не доходит...
 
Нужно написать прогу чтобы шарик летел до середины увеличива после середины уменьшался. Начинал лететь красным на середине становился зеленым а заканчивал лететь синим..

Вот что я уже написала... как дальше не знаю( помогите умные люди


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OpenGl, Math;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Dc1:HDC;
Hrc1:HGLRC;
i:Integer;
BeginTime: Cardinal;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
Pfd1: TpixelFormatDescriptor;
nPixelFormat: Integer;
begin
Dc1 := GetDC(Form1.Handle);
FillChar(Pfd1,SizeOf(Pfd1),0);
Pfd1.dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
nPixelFormat := ChoosePixelFormat(Dc1,@Pfd1);
SetPixelFormat(Dc1,nPixelFormat,@Pfd1);
Hrc1 := wglCreateContext(Dc1);
wglMakeCurrent(Dc1,Hrc1);

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
wglMakeCurrent(0,0);
wglDeleteContext(Hrc1);
ReleaseDC(Form1.Handle,Dc1);
DeleteDC(Dc1);
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
glViewPort(0, 0, Form1.ClientWidth, Form1.ClientHeight);
glClearColor(0.0,0.0,0.0,1.0);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
gluOrtho2D(-Form1.ClientWidth/Form1.clientHeight, Form1.ClientWidth/Form1.clientHeight, -1.0,1.0);
glMatrixMode(GL_MODELVIEW);
glPushmatrix;

glTranslatef(-1.5,0,0);
glTranslateF(4*((GetTickCount-BeginTime)mod 2000)/2000,0,0);
glScalef(2*((GetTickCount-BeginTime)mod 2000)/2000,2*((GetTickCount-BeginTime)mod 2000)/2000,1);
glColor3f(1.0,1.0,1.0);
glBegin(Gl_TRIANGLE_FAN);

glVertex2f(-1.2,0.0);




for i :=0 to 1000 do
glVertex2f(-1.2 + 0.2*cos(DegToRad(I/1000*360)),0.0 +0.2*
sin(DegToRad(i/1000*360)));



glend;
glPopMatrix;
glFlush;
SwapBuffers(Dc1);
Application.ProcessMessages;
if not Application.Terminated then InvalidateRect(Form1.Handle,nil,false);



end;

end.


Часовой пояс GMT +4, время: 15:22.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.