UMaterials.pas 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. unit UMaterials;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5. Dialogs, GLCrossPlatform, {BaseClasses,} GLMaterial, GLCustomShader,
  6. GLSLShader, GLSLDiffuseSpecularShader,GLTexture, GLScene, GLBaseClasses;
  7. type
  8. TForm2 = class(TForm)
  9. GLMaterialLibrary1: TGLMaterialLibrary;
  10. ObjectShader: TGLSLDiffuseSpecularShader;
  11. PlaneShader: TGLSLDiffuseSpecularShader;
  12. procedure loadTextures;
  13. private
  14. procedure loadTexture(TexName,FileName:string;Shader:TGLShader);overload;
  15. procedure loadTexture(TexName,FileName:string;Shader:TGLShader;
  16. ScaleFactor:Real);overload;
  17. public
  18. end;
  19. var
  20. Form2:TForm2;
  21. implementation
  22. {$R *.dfm}
  23. uses UMyUtils;
  24. procedure TForm2.loadTexture(TexName,FileName:string;Shader:TGLShader);
  25. begin
  26. if not FileExists('Texturen\'+FileName+'.jpg') then Exit;
  27. GLMaterialLibrary1.AddTextureMaterial(TexName,'Texturen\'+FileName+'.jpg');
  28. if Shader<>nil then
  29. GLMaterialLibrary1.Materials[GLMaterialLibrary1.Materials.Count-
  30. 1].Shader:=Shader;
  31. GLMaterialLibrary1.Materials[GLMaterialLibrary1.Materials.Count-
  32. 1].Material.Texture.TextureMode:=tmDecal;
  33. end;
  34. procedure TForm2.loadTexture(TexName,FileName:string;Shader:TGLShader;
  35. ScaleFactor:Real);
  36. var BM1,BM2:TBitmap;
  37. begin
  38. if not FileExists('Texturen\'+FileName+'.jpg') then Exit;
  39. BM1:=JPGtoBMP('Texturen\'+FileName+'.jpg');
  40. BM2:=TBitmap.Create;
  41. BM2.Width:=Round(BM1.Width*ScaleFactor);
  42. BM2.Height:=Round(BM1.Height*ScaleFactor);
  43. BM2.Canvas.StretchDraw(Rect(0,0,BM2.Width,BM2.Height),BM1);
  44. GLMaterialLibrary1.AddTextureMaterial(TexName,BM2);
  45. if Shader<>nil then
  46. GLMaterialLibrary1.Materials[GLMaterialLibrary1.Materials.Count-
  47. 1].Shader:=Shader;
  48. GLMaterialLibrary1.Materials[GLMaterialLibrary1.Materials.Count-
  49. 1].Material.Texture.TextureMode:=tmDecal;
  50. end;
  51. procedure TForm2.loadTextures;
  52. begin
  53. try
  54. loadTexture('GreenSpeed','GreenSpeed',PlaneShader);
  55. loadTexture('RedSpeed','RedSpeed',PlaneShader);
  56. loadTexture('BlueSpeed','BlueSpeed',PlaneShader);
  57. loadTexture('Explosion','Explosion',PlaneShader);
  58. loadTexture('PortDownUp','PortDownUp',PlaneShader);
  59. loadTexture('PortUpDown','PortUpDown',PlaneShader);
  60. loadTexture('Turner','Turner',PlaneShader);
  61. loadTexture('Goal','Goal',PlaneShader);
  62. loadTexture('PusherUp','PusherUp',PlaneShader);
  63. loadTexture('PusherDown','PusherDown',PlaneShader);
  64. loadTexture('grey','grey',nil);
  65. loadTexture('Muh','Muh',ObjectShader);
  66. loadTexture('RandomSpeed','RandomSpeed',PlaneShader);
  67. loadTexture('ArrowSpawner','ArrowSpawner',PlaneShader);
  68. loadTexture('BlackExplosion','BlackExplosion',PlaneShader);
  69. loadTexture('Lightning','Lightning',PlaneShader);
  70. loadTexture('ContaminationDown','ContaminationDown',PlaneShader);
  71. loadTexture('ContaminationUp','ContaminationUp',PlaneShader);
  72. loadTexture('InkDown','InkDown',PlaneShader);
  73. loadTexture('InkUp','InkUp',PlaneShader);
  74. loadTexture('Bonbon','Bonbon',PlaneShader);
  75. loadTexture('Open','Background',PlaneShader);
  76. loadTexture('HalfWall','HalfWall',ObjectShader);
  77. loadTexture('HalfWallLowRes','HalfWall',ObjectShader,0.5);
  78. loadTexture('HalfWallVeryLowRes','HalfWall',ObjectShader,0.25);
  79. loadTexture('Wall','Wall',ObjectShader);
  80. loadTexture('WallLowRes','Wall',ObjectShader,0.5);
  81. loadTexture('WallVeryLowRes','Wall',ObjectShader,0.25);
  82. loadTexture('Arrow','Arrow',PlaneShader);
  83. loadTexture('CeilingVeryLowRes','Ceiling',PlaneShader,0.1);
  84. loadTexture('CeilingLowRes','Ceiling',PlaneShader,0.5);
  85. loadTexture('Ceiling','Ceiling',PlaneShader);
  86. loadTexture('GrassVeryLowRes','Grass',PlaneShader,0.1);
  87. loadTexture('GrassLowRes','Grass',PlaneShader,0.5);
  88. loadTexture('Grass','Grass',PlaneShader);
  89. loadTexture('GreenWall','GreenWall',nil);
  90. GLMaterialLibrary1.Materials[GLMaterialLibrary1.Materials.Count-
  91. 1].TextureScale.X:=4;
  92. GLMaterialLibrary1.Materials[GLMaterialLibrary1.Materials.Count-
  93. 1].TextureScale.Y:=2;
  94. GLMaterialLibrary1.Materials[GLMaterialLibrary1.Materials.Count-
  95. 1].TextureScale.Z:=4;
  96. loadTexture('HalfGreenWall','GreenWall',nil);
  97. GLMaterialLibrary1.Materials[GLMaterialLibrary1.Materials.Count-
  98. 1].TextureScale.X:=4;
  99. GLMaterialLibrary1.Materials[GLMaterialLibrary1.Materials.Count-
  100. 1].TextureScale.Y:=1;
  101. GLMaterialLibrary1.Materials[GLMaterialLibrary1.Materials.Count-
  102. 1].TextureScale.Z:=4;
  103. loadTexture('HalfWallFar','HalfWall',nil,0.25);
  104. GLMaterialLibrary1.Materials[GLMaterialLibrary1.Materials.Count-
  105. 1].TextureScale.X:=4;
  106. GLMaterialLibrary1.Materials[GLMaterialLibrary1.Materials.Count-
  107. 1].TextureScale.Y:=1;
  108. GLMaterialLibrary1.Materials[GLMaterialLibrary1.Materials.Count-
  109. 1].TextureScale.Z:=4;
  110. loadTexture('YSNP','YSNP',PlaneShader);
  111. loadTexture('WallFar','Wall',nil,0.25);
  112. GLMaterialLibrary1.Materials[GLMaterialLibrary1.Materials.Count-
  113. 1].TextureScale.X:=4;
  114. GLMaterialLibrary1.Materials[GLMaterialLibrary1.Materials.Count-
  115. 1].TextureScale.Y:=2;
  116. GLMaterialLibrary1.Materials[GLMaterialLibrary1.Materials.Count-
  117. 1].TextureScale.Z:=4;
  118. except Application.Terminate;
  119. end;
  120. end;
  121. end.