Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ OpenGL в Delphi

Автор: Jonson 18.09.2003 12:44

Помогите чайнику разобраться с Opengl ???
Вот постейший код:

unit Unit1;
interface
uses
 Windows, Classes, Opengl, Forms;

type
 TForm1 = class(TForm)
   procedure FormPaint(Sender: TObject);

 private

 public

 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormPaint(Sender: TObject);
 begin
   glBegin (GL_POINTS);
      glvertex2f(0,0);
   glEnd;
 end;

end.


Все компилируется нормально, но точка не рисуется :'(. Мож что нибуть ещё дописать надо?

Помогите, плиз!!!

Автор: nollie 18.09.2003 20:57

поищи файл glu32.dll в винде...
может его просто нет и система не поддерживает opengl.

Автор: trminator 18.09.2003 22:19

Цитата
поищи файл glu32.dll в винде...
может его просто нет и система не поддерживает opengl.

Тогда бы и не откомпилировалось даже.

ЗЫ лично я в OpenGL вообще не шарю, но у меня это тоже компилируется, но никаких точек не наблюдается.

Автор: Jonson 19.09.2003 11:56

Фаил то есть нужна процедура на контекст воспроизвединия или чёто такое ???

Автор: AGR 23.01.2004 0:19

Первый раз криво получилось а править без регистрации не дает... так что еще раз тоже самое

unit Unit1;

interface

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


type
 TfrmGL = class(TForm)
   procedure FormCreate(Sender: TObject);
   procedure FormPaint(Sender: TObject);
   procedure FormDestroy(Sender: TObject);

 private
   hrc: HGLRC;  
 end;

var
 frmGL: TfrmGL;

implementation

{$R *.DFM}

{=======================================================================
procedure TfrmGL.FormPaint(Sender: TObject);
begin
wglMakeCurrent(Canvas.Handle, hrc);

glViewPort (0, 0, ClientWidth, ClientHeight);

glClearColor (0.5, 0.5, 0.75, 1.0);
glClear (GL_COLOR_BUFFER_BIT);    
glPointSize (20);                  
glColor3f (1.0, 0.0, 0.5);          
glBegin (GL_POINTS);                
  glVertex2f (-1, -1);
  glVertex2f (-1, 1);
  glVertex2f (0, 0);
  glVertex2f (1, -1);
  glVertex2f (1, 1);
glEnd;                              

SwapBuffers(Canvas.Handle);        
wglMakeCurrent(0, 0);
end;

{=======================================================================

procedure SetDCPixelFormat (hdc : HDC);
var
pfd : TPixelFormatDescriptor;
nPixelFormat : Integer;
begin
FillChar (pfd, SizeOf (pfd), 0);
pfd.dwFlags  := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
nPixelFormat := ChoosePixelFormat (hdc, @pfd);
SetPixelFormat (hdc, nPixelFormat, @pfd);
end;

{=======================================================================
procedure TfrmGL.FormCreate(Sender: TObject);
begin
SetDCPixelFormat(Canvas.Handle);
hrc := wglCreateContext(Canvas.Handle);
end;

{=======================================================================
procedure TfrmGL.FormDestroy(Sender: TObject);
begin
wglDeleteContext(hrc);
end;

end.

Автор: trminator 23.01.2004 15:13

Если ему уже и неинтересно, то мне интересно +) Спасибо!