Unit1.cpp 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include <tchar.h>
  4. #pragma hdrstop
  5. #include "Unit1.h"
  6. //---------------------------------------------------------------------------
  7. #pragma package(smart_init)
  8. #pragma link "GLBaseClasses"
  9. #pragma link "GLCadencer"
  10. #pragma link "GLCoordinates"
  11. #pragma link "GLCrossPlatform"
  12. #pragma link "GLGeomObjects"
  13. #pragma link "GLGraph"
  14. #pragma link "GLMaterial"
  15. #pragma link "GLObjects"
  16. #pragma link "GLPostEffects"
  17. #pragma link "GLScene"
  18. #pragma link "GLSimpleNavigation"
  19. #pragma link "GLVectorFileObjects"
  20. #pragma link "GLWin32Viewer"
  21. #pragma link "GLFileMD2"
  22. #pragma link "GLFileMS3D"
  23. #pragma link "GLFile3DS"
  24. #pragma resource "*.dfm"
  25. TForm1 *Form1;
  26. //---------------------------------------------------------------------------
  27. __fastcall TForm1::TForm1(TComponent* Owner)
  28. : TForm(Owner)
  29. {
  30. }
  31. //---------------------------------------------------------------------------
  32. void __fastcall TForm1::FormCreate(TObject *Sender)
  33. {
  34. // First load models.
  35. SetGLSceneMediaDir();
  36. Fighter->LoadFromFile("waste.md2"); //Fighter
  37. Fighter->SwitchToAnimation(0, true);
  38. Fighter->AnimationMode = aamLoop;
  39. Fighter->Scale->Scale(2);
  40. Teapot->LoadFromFile("Teapot.3ds"); //Teapot (no texture coordinates)
  41. Teapot->Scale->Scale(0.8);
  42. Sphere_big->LoadFromFile("Sphere_big.3DS");
  43. Sphere_big->Scale->Scale(70);
  44. Sphere_little->LoadFromFile("Sphere_little.3ds");
  45. Sphere_little->Scale->Scale(4);
  46. // Then load textures.
  47. MaterialLibrary->LibMaterialByName("Earth")->Material->Texture->Image->LoadFromFile("Earth.jpg");
  48. MaterialLibrary->LibMaterialByName("Fighter")->Material->Texture->Image->LoadFromFile("Waste.jpg");
  49. MaterialLibrary->LibMaterialByName("Noise")->Material->Texture->Image->LoadFromFile("Flare1.bmp");
  50. // Blur Shader
  51. BlurShader = new TGLSLPostBlurShader(this);
  52. PostShaderHolder->Shaders->Add()->Shader = BlurShader;
  53. ShaderCheckListBox->Items->AddObject("Blur Shader", BlurShader);
  54. ShaderCheckListBox->Checked[0] = True;
  55. // Transformation Shader
  56. TransformationShader = new TGLCGPostTransformationShader(this);
  57. TransformationShader->TransformationTexture = MaterialLibrary->LibMaterialByName("Noise")->Material->Texture;
  58. PostShaderHolder->Shaders->Add()->Shader = TransformationShader;
  59. ShaderCheckListBox->Items->AddObject("Transformation Shader", TransformationShader);
  60. ShaderCheckListBox->Checked[1] = true;
  61. }
  62. //---------------------------------------------------------------------------
  63. void __fastcall TForm1::CadencerProgress(TObject *Sender, const double deltaTime,
  64. const double newTime)
  65. {
  66. Viewer->Invalidate();
  67. if (TurnPitchrollCheckBox->Checked) {
  68. Fighter->Roll(20 * deltaTime);
  69. Sphere_big->Pitch(40 * deltaTime);
  70. Sphere_big->Turn(40 * deltaTime);
  71. Sphere_little->Roll(40 * deltaTime);
  72. Teapot->Roll(-20 * deltaTime);
  73. }
  74. }
  75. //---------------------------------------------------------------------------
  76. void __fastcall TForm1::LightCubeProgress(TObject *Sender, const double deltaTime,
  77. const double newTime)
  78. {
  79. if (LightMovingCheckBox->Checked)
  80. LightCube->MoveObjectAround(Camera->TargetObject, sin(newTime) * deltaTime * 10, deltaTime * 20);
  81. }
  82. //---------------------------------------------------------------------------
  83. void __fastcall TForm1::BigBlurThicknessCheckboxClick(TObject *Sender)
  84. {
  85. if (BigBlurThicknessCheckbox->Checked)
  86. BlurShader->Threshold = 0.005;
  87. else
  88. BlurShader->Threshold = 0.2;
  89. }
  90. //---------------------------------------------------------------------------
  91. void __fastcall TForm1::ShaderCheckListBoxClick(TObject *Sender)
  92. {
  93. int I;
  94. if (ShaderCheckListBox->Items->Count != 0)
  95. for (I = 0; I < ShaderCheckListBox->Items->Count - 1; I++) {
  96. /// TGLShader(ShaderCheckListBox->Items->Objects[I])->Enabled = ShaderCheckListBox->Checked[I];
  97. }
  98. }
  99. //---------------------------------------------------------------------------
  100. void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
  101. {
  102. Cadencer->Enabled = false;
  103. }
  104. //---------------------------------------------------------------------------