fMultiTexture.pas 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. unit fMultiTexture;
  2. interface
  3. uses
  4. Winapi.OpenGL,
  5. System.SysUtils,
  6. System.Classes,
  7. Vcl.Graphics,
  8. Vcl.Controls,
  9. Vcl.Forms,
  10. Vcl.Dialogs,
  11. Vcl.ComCtrls,
  12. Vcl.StdCtrls,
  13. Vcl.ExtCtrls,
  14. Vcl.ExtDlgs,
  15. Vcl.Imaging.Jpeg,
  16. GLS.Scene,
  17. GLS.VectorTypes,
  18. GLS.Objects,
  19. GLS.Texture,
  20. GLS.SceneViewer,
  21. GLS.Material,
  22. GLS.Coordinates,
  23. GLS.BaseClasses,
  24. GLS.Utils;
  25. type
  26. TForm1 = class(TForm)
  27. GLScene1: TGLScene;
  28. GLSceneViewer1: TGLSceneViewer;
  29. Plane1: TGLPlane;
  30. GLCamera1: TGLCamera;
  31. GLMaterialLibrary1: TGLMaterialLibrary;
  32. Image1: TImage;
  33. Image2: TImage;
  34. Label1: TLabel;
  35. Label2: TLabel;
  36. Label3: TLabel;
  37. TrackBar1: TTrackBar;
  38. Label4: TLabel;
  39. OpenPictureDialog1: TOpenPictureDialog;
  40. CBClampTex2: TCheckBox;
  41. procedure FormCreate(Sender: TObject);
  42. procedure Image1Click(Sender: TObject);
  43. procedure Image2Click(Sender: TObject);
  44. procedure TrackBar1Change(Sender: TObject);
  45. procedure CBClampTex2Click(Sender: TObject);
  46. private
  47. public
  48. end;
  49. var
  50. Form1: TForm1;
  51. implementation
  52. {$R *.DFM}
  53. procedure TForm1.FormCreate(Sender: TObject);
  54. begin
  55. SetGLSceneMediaDir();
  56. // prepare images to merge in the multitexture
  57. with GLMaterialLibrary1 do begin
  58. Image1.Picture.LoadFromFile('ashwood.jpg');
  59. Materials[0].Material.Texture.Image.Assign(Image1.Picture);
  60. Image2.Picture.LoadFromFile('Flare1.bmp');
  61. Materials[1].Material.Texture.Image.Assign(Image2.Picture);
  62. end;
  63. end;
  64. procedure TForm1.Image1Click(Sender: TObject);
  65. begin
  66. // load a new Image1
  67. if OpenPictureDialog1.Execute then
  68. begin
  69. Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
  70. GLMaterialLibrary1.Materials[0].Material.Texture.Image.Assign(Image1.Picture);
  71. end;
  72. end;
  73. procedure TForm1.Image2Click(Sender: TObject);
  74. begin
  75. // load a new Image2
  76. if OpenPictureDialog1.Execute then
  77. begin
  78. Image2.Picture.LoadFromFile(OpenPictureDialog1.FileName);
  79. GLMaterialLibrary1.Materials[1].Material.Texture.Image.Assign(Image2.Picture);
  80. end;
  81. end;
  82. procedure TForm1.TrackBar1Change(Sender: TObject);
  83. begin
  84. // adjust scale
  85. with GLMaterialLibrary1.Materials[1].TextureScale do
  86. begin
  87. X:=TrackBar1.Position/10;
  88. Y:=TrackBar1.Position/10;
  89. end;
  90. end;
  91. procedure TForm1.CBClampTex2Click(Sender: TObject);
  92. begin
  93. with GLMaterialLibrary1.Materials[1].Material.Texture do
  94. if CBClampTex2.Checked then
  95. TextureWrap:=twNone
  96. else TextureWrap:=twBoth;
  97. end;
  98. end.