Код | procedure TfrmGL.FormPaint(Sender: TObject); begin glClear (GL_COLOR_BUFFER_BIT); // î÷èñòêà áóôåðà öâåòà
glBegin(GL_QUADS); glVertex3f(1.0, 1.0, 0.0); glVertex3f(-1.0, 1.0, 0.0); glVertex3f(-1.0, -1.0, 0.0); glVertex3f(1.0, -1.0, 0.0); glEnd;
SwapBuffers(DC); 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 DC := GetDC (Handle); SetDCPixelFormat (DC); hrc := wglCreateContext (DC); wglMakeCurrent (DC, hrc); glClearColor (0.5, 0.5, 0.75, 1.0); glColor3f (1.0, 0.0, 0.5); glPolygonMode (GL_FRONT_AND_BACK, GL_LINE); end;
procedure TfrmGL.FormDestroy(Sender: TObject); begin wglMakeCurrent(0, 0); wglDeleteContext(hrc); ReleaseDC (Handle, DC); DeleteDC (DC); end;
procedure TfrmGL.FormResize(Sender: TObject); begin glViewport(0, 0, ClientWidth, ClientHeight); glMatrixMode(GL_PROJECTION); glLoadIdentity;
gluPerspective(30, ClientWidth / ClientHeight, 1.0, 15.0);
glMatrixMode(GL_MODELVIEW); glLoadIdentity; // gluLookAt(0,0,10,0,0,0,0,0,1); glTranslatef (0.0, 0.0, -10.0);
InvalidateRect(Handle, nil, False); end;
|
Код из примера, который я нашел в сети. В последней функции если раскомментировать gluLookAt и закомментировать glTranslate - изображение пропадает. Обычно работаю с opengl на С++ или в последнее время в D - там все работает хорошо. Отзовитесь кто использует это в Дельфи |