
21.12.2009, 22:01
|
Активный
|
|
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
|
|
Вот тебе код, работающий однозначно. На его основе найди ошибку сам, это твоё "домашние задание":
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OpenGL, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
DC:HDC; // переменные для получения контекста воспроизведения
hrc:HGLRC; //
procedure SetPixFormat;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.SetPixFormat;
var
nPixelFormat: Integer;
pfd: TPixelFormatDescriptor;
begin
FillChar(pfd, SizeOf(pfd), 0);
with pfd do
begin
nSize := sizeof(pfd);
nVersion := 1;
dwFlags := PFD_DRAW_TO_WINDOW or
PFD_SUPPORT_OPENGL or
PFD_DOUBLEBUFFER;
iPixelType:= PFD_TYPE_RGBA;
cColorBits:= 24;
cDepthBits:= 32;
iLayerType:= PFD_MAIN_PLANE;
end;
nPixelFormat := ChoosePixelFormat(DC, @pfd);
SetPixelFormat(DC, nPixelFormat, @pfd);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DC := GetDC(Handle); // получить окно
SetPixFormat; // установим формат пикселя
hrc := wglCreateContext(DC);
wglMakeCurrent(DC, hrc); // сделаем "текущим контекст воспроизведения
glMatrixMode(GL_MODELVIEW);
Timer1.Enabled := True; // включим таймер
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
//Команды ниже должен знать как свои 5 пальцев!
glBegin(GL_TRIANGLES);
glColor3f(1.0,0.0,0.0);
glVertex3f(0,0,0);
glColor3f(1.0,1.0,0.0);
glVertex3f(500,0,0);
glColor3f(1,0,0);
glVertex3f(250,500,0);
glEnd;
SwapBuffers(DC);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Timer1.Enabled := False;
wglMakeCurrent(0, 0); // сделать контекст "текущим"
wglDeleteContext(hrc); // удалить контекст воспроизведения
ReleaseDC(Handle, DC); // удалить окно
end;
end.
Кстати, забудь о TForm1.WMPaint и не используй его, это совсем не для OpenGL.
__________________
Делаем'c разные игры. Искать на glscene.ru
|