Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 
 

96 Zeilen
2.4 KiB

  1. unit uMainForm;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
  6. uglcContext;
  7. type
  8. TMainForm = class(TForm)
  9. procedure FormCreate(Sender: TObject);
  10. procedure FormDestroy(Sender: TObject);
  11. procedure FormPaint(Sender: TObject);
  12. procedure FormResize(Sender: TObject);
  13. private
  14. fContext: TglcContext;
  15. procedure Render;
  16. end;
  17. var
  18. MainForm: TMainForm;
  19. implementation
  20. {$R *.lfm}
  21. uses
  22. dglOpenGL;
  23. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  24. //MainForm//////////////////////////////////////////////////////////////////////////////////////////////////////////////
  25. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  26. procedure TMainForm.FormCreate(Sender: TObject);
  27. var
  28. pf: TglcContextPixelFormatSettings;
  29. begin
  30. pf := TglcContext.MakePF();
  31. fContext := TglcContext.GetPlatformClass.Create(self, pf);
  32. fContext.BuildContext;
  33. fContext.Activate;
  34. glDisable(GL_DEPTH_TEST);
  35. glDisable(GL_CULL_FACE);
  36. end;
  37. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  38. procedure TMainForm.FormDestroy(Sender: TObject);
  39. begin
  40. FreeAndNil(fContext);
  41. end;
  42. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  43. procedure TMainForm.FormPaint(Sender: TObject);
  44. begin
  45. Render;
  46. end;
  47. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  48. procedure TMainForm.FormResize(Sender: TObject);
  49. begin
  50. if Assigned(fContext) then begin
  51. glViewport(0, 0, ClientWidth, ClientHeight);
  52. glMatrixMode(GL_PROJECTION);
  53. glLoadIdentity;
  54. glOrtho(0, ClientWidth, ClientHeight, 0, 10, -10);
  55. glMatrixMode(GL_MODELVIEW);
  56. glLoadIdentity;
  57. end;
  58. end;
  59. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  60. procedure TMainForm.Render;
  61. const
  62. X = 100;
  63. var
  64. w, h: Integer;
  65. begin
  66. w := ClientWidth;
  67. h := ClientHeight;
  68. glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  69. glColor4f(1.0, 1.0, 1.0, 1.0);
  70. glBegin(GL_QUADS);
  71. glVertex2f(X, X);
  72. glVertex2f(X, h-X);
  73. glVertex2f(w-X, h-X);
  74. glVertex2f(w-X, X);
  75. glEnd;
  76. fContext.SwapBuffers;
  77. end;
  78. end.